大端与小端存储详解

来源:互联网 发布:人工智能替代人类 编辑:程序博客网 时间:2024/04/20 03:57

计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。

举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11

  • 大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。
  • 小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。


由于计算机存储与传输的单位都是byte=8位,而8位正好等于2位16进制,故一个字节可以存储2个16进制数字。

如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。为简单起见,本文使用OP0表示一个32位数据的最高字节MSB(Most Significant Byte),使用OP3表示一个32位数据最低字节LSB(Least Significant Byte)。 

地址偏移

大端模式

小端模式

0x00

12(OP0)

78(OP3)

0x01

34(OP1)

56(OP2)

0x02

56(OP2)

34(OP1)

0x03

78(OP3)

12(OP0)


为何第二个地址偏移为0x01由于12与34相差8位,故偏移8位,第三个相对第一个偏移16位,相对第二个偏移8位,0x01&0x01=0x02

原创粉丝点击