小大端模式哪个更符合人的思维?
主机字节序一般分为大端和小端两种,在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处理器。不仅对于处理器,一些外设的设计中也存在着使用大端或者小端进行数据存放的选择。
                    
                

                
            
        
浙公网安备 33010602011771号