所看的关于计算机大小端问题最清楚的解答
2013-02-21 22:34
162 查看
大端和小端来自一个小故事:端模式(Endian)的这个词出自Jonathan
Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。
在内存中,数据是以字节(8bit)存储的,当存储16bit的int或者32bit的long(与操作系统有关),就面临着大端 (Big-Endian) 存储还是小端 (Little-Endian) 存储的问题。下面解释一下大端存储和小端存储的概念。
大端存储:高字节存储在低地址中,即高位先存;
小端存储:低字节存储在高地址中,即低位先存。
其实这两个概念不难理解,但是比较容易记混。由于大端序和小端序都是从存储器的低地址开始向高地址存储数据,不同的是一个字数据中先存高字节还是先存低字节。可以记住这样一个口诀:“高大低小”。“高”是指高字节,“大”是指大端序,“低”是指低字节,“小”是指小端序,“高大低小”也即先存高字节为大端序,先存低字节为小端序。
举个例子说明这个问题:
位宽为32bit的CPU,要存储的字数据为0x12345678,起始地址为0x4000。
大端存储如下:
小端存储如下:
一般地,Intel系列的CPU采用小端存储,KEIL C51则为大端存储。 同时,在网络传输中,网络协议需要指定网络字节顺序,TCP/IP协议中使用16位整数和32位整数的高位先存模式,对应我们的大端模式。
Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。
在内存中,数据是以字节(8bit)存储的,当存储16bit的int或者32bit的long(与操作系统有关),就面临着大端 (Big-Endian) 存储还是小端 (Little-Endian) 存储的问题。下面解释一下大端存储和小端存储的概念。
大端存储:高字节存储在低地址中,即高位先存;
小端存储:低字节存储在高地址中,即低位先存。
其实这两个概念不难理解,但是比较容易记混。由于大端序和小端序都是从存储器的低地址开始向高地址存储数据,不同的是一个字数据中先存高字节还是先存低字节。可以记住这样一个口诀:“高大低小”。“高”是指高字节,“大”是指大端序,“低”是指低字节,“小”是指小端序,“高大低小”也即先存高字节为大端序,先存低字节为小端序。
举个例子说明这个问题:
位宽为32bit的CPU,要存储的字数据为0x12345678,起始地址为0x4000。
大端存储如下:
地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
内容 | 0x12 | 0x34 | 0x56 | 0x78 |
地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
内容 | 0x78 | 0x56 | 0x34 | 0x12 |
相关文章推荐
- 关于计算机中的大小端存储问题
- JS中关于call()方法的一个问题(转自百度知道,解答非常详细清楚)
- 关于“计算机丢失api-ms-win-crt-runtime-l1-1-0.dll”问题的解决
- 关于UCOS学习OSMboxCreate(NULL)的问题,希望遇到同样问题的人得到合理的解答
- Java(其实是计算机系统的通病,而不单单是Java的问题,C、C++等任何语言都有这个问题)关于小数的运算结果,不正确不精确,原因剖析,及解决办法
- 关于ACM实验室纳新问题解答
- 关于大、小端问题
- 关于域帐户将计算机加入域登陆上限问题
- 关于指针的十个问题的解答
- [原创]关于《精通QT4编程》第一个例子无法编译的问题的解答
- 关于webpart的一个重大问题,需要专家解答!!!
- 关于ASP循环表格的问题之解答[比较详细]
- 关于一些基础的Java问题的解答(五)
- 计算机存储的大端小端问题
- 关于FAT32和NTFS文件系统的介绍以及相关问题的解答(转自“第二战区”)
- 关于C51中“大小端存储”问题的详解
- 关于64位windows2003 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 的问题
- 关于一些基础的Java问题的解答(一)
- 关于 windows 不能在本地计算机中启动tomcat服务问题的解决方案
- 关于telnet自动关闭连接的问题解答