关于计算机中的大小端存储问题
2013-06-07 14:20
253 查看
source:http://blog.sina.com.cn/s/blog_79a076a101016hhf.html
大端和小端来自一个小故事:端模式(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位整数的高位先存模式,对应我们的大端模式。
参考: /article/11233825.html
http://www.cnblogs.com/daxu/archive/2012/08/14/2638278.html
大端和小端来自一个小故事:端模式(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。
大端存储如下:
地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
内容 | 0x12 | 0x34 | 0x56 | 0x78 |
地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
内容 | 0x78 | 0x56 | 0x34 | 0x12 |
参考: /article/11233825.html
http://www.cnblogs.com/daxu/archive/2012/08/14/2638278.html
相关文章推荐
- 数据结构中,关于“大小端”的数据存储方式的相关问题
- 关于计算机中小端法和大端法存储的一点总结
- 关于C51中“大小端存储”问题的详解
- 关于C51中“大小端存储”问题的详解
- 关于大小端存储方式问题的思考
- 关于C51中“大小端存储”问题的详解
- 一个简单程序思考计算机里int数据的存储问题,兼论大端模式和小端模式
- 计算机存储的大端小端问题
- 计算机大小端存储问题详解
- 关于计算机中数据类型存储的对齐问题
- 计算机为什么要用补码存储整型,关于-32768的问题
- 关于文件、网络传输以及内存存储的大小端问题
- 【C++知识点】关于32位数字小端方式存储的问题
- 补码二进制计算机为什么要用补码存储整型,关于-32768的问题
- 关于变量的类型及存储剖析和大小端问题
- 关于大小端存储的问题
- 所看的关于计算机大小端问题最清楚的解答
- 计算机内部如何存储数据,关于源码、补码的问题!
- 数据结构中,关于“大小端”的数据存储方式的相关问题
- 关于计算机改名无法连接TFS的问题