小大端模式哪个更符合人的思维?

主机字节序一般分为大端和小端两种,在X86平台上一般采用小端模式。(采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。)

  “小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。

  1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 

  2.大端法(Big-Endian)就是高位字节排放在内存的低地址端即该值的起始地址,低位字节排放在内存的高地址端。

 

int a = 0x12 34 56 78;
  ← 高位字节          低位字节

a是四字节的int类型变量,需要占四个字节空间,假设变量a的首地址是0x2000,那么数据存储在地址中的格式如下:


        低地址                    高地址

        0x2000  0x2001   0x2002   0x2003   
        0x12   0x34    0x56    0x78        大端模式存储(高位字节放低地址)更符合人思维方式
        0x78    0x56    0x34    0x12      小端模式存储(低位字节在低地址)

 

这里画成表格形式:【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)
如果将一个16位的整数0x1234存放到一个短整型变量(short)中。这个短整型变量在内存中的存储在大小端模式由下表所示。
;地址偏移
;大端模式
;小端模式
0x00
12(OP0)
34(OP1)
0x01
34(OP1)
12(OP0)
由上表所知,采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将高位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。
有的处理器系统采用了小端方式进行数据存放,如Intel的奔腾。有的处理器系统采用了大端方式进行数据存放,如IBM半导体和Freescale的PowerPC处理器。不仅对于处理器,一些外设的设计中也存在着使用大端或者小端进行数据存放的选择。
可参考: http://dwz.cn/2KbK1g

你可能感兴趣的:(小大端模式哪个更符合人的思维?)