大端和小端的区别


一、大小端名称起源

       Endian这个词来源于Jonathan Swift在1726年写的讽刺小说"Gulliver's Travels"(《格利佛游记》)。该小说在描述Gulliver畅游小人国时碰到了如下的一个场景。有一次因为对水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开的争论而引发了一场战争,并形成了两支截然对立的队伍:支持从Big-End剥开的人称作Big-Endians,而支持从Little-End剥开的人就称作Little-Endians。

      这个故事其实是讽刺当时英国和法国之间持续的冲突。Danny Cohen,网络协议的开创者,第一次使用这两个术语指代字节顺序,后来就被大家广泛接受。

参考:

http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E5%A5%BD%E6%96%87/20150926/85692.html

维基百科给出不一样但类似的讲解:字节顺序 wiki

二、大小端模式定义

       1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。(低低高高,低地址低字节,高地址高字节)

       2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。(低高高低,低地址高字节,高地址低字节)

       举一个例子,在32位数字0x12 34 56 78在内存中的表示形式为:

      1)大端模式:

         低地址 -------------------------> 高地址

         0x12 |  0x34  | 0x56  |  0x78

      2)小端模式:

       低地址 -------------------------> 高地址

        0x78 |  0x56  | 0x34  |  0x12

三、大小端出现原因

       计算机系统是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但对于位数大于8位的处理器,如16位或32位的处理器,由于寄存器宽度大于一个字节,那么必然存在一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式的出现。

参考:

http://blog.chinaunix.net/uid-25647278-id-3080324.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值