大端存储 小端存储 (终极版本Byte Endian是指字节在内存中的组织,所以也称它为Byte Ordering,或Byte Order。 对于数据中跨越多个字节的对象, 我们必须为它建)

参考文章:

http://blog.sina.com.cn/s/blog_79a076a101016hhf.html

http://blog.csdn.net/aaronin/article/details/7700771

http://www.cnblogs.com/daxu/archive/2012/08/14/2638278.html

什么是大端小端存储:(百度百科)

大端模式,是指数据的高位保存在内存的低地址中,而数据的低位保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
小端模式,是指数据的高位保存在内存的高 地址中,而数据的低位保存在内存的低地址中,这种存储模式将地址的高低和 数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

为什么要有大端小端存储:(百度百科)

这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。


先说几个前提:

存储器存储数据都是从低地址向高地址存储。

内存中数据是以字节为单位进行存储的,每个地址单元对应着一个字节(byte),一个字节为8位(bite)。

以32位CPU为例,要存储数据0x12345678,这里采用16进制表示法,就是以4位为一组,而一个字节有8位,所以2个16进制数就可以表示了(4X2)。

既然是从低地址向高地址存储:

数据总有个先后顺序,我们默认刚才0x12345678,我们知道是从右向左位数越来越高的。就好像我们平时的任意一个数2014也是从右向左位数越来越高的,只不过进制不同而已,注意这只是数据显示的一种表示方法,跟它的存储顺序无关

既然以字节为单位,所以(0x12),( 0x34),(0x56),( 0x78)就无法分开,而且他们还是有序的要么就 0x12,0x34,0x56,0x78,要么就0x78,0x56,0x34,0x12。

关键来了,

大端存储:高字节存储在低地址,高位先存

小端存储:低字节存储在低地址,低位先存

所以我们知道了大小对应着高低,而高先就是大,低先就是小了。

图示:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值