计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。
举例来说,数值0x2211
使用两个字节储存:高位字节是0x22
,低位字节是0x11
。
大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。
小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。
举例:
var = 0x11223344,对于这个变量的最高字节为0x11,最低字节为0x44
(1)大端模式存储(存储地址为16位)
地址 数据
0x0004(高地址) 0x44
0x0003 0x33
0x0002 0x22
0x0001(低地址) 0x11
首先,为什么会有小端字节序?
答案是,计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。
但是,人类还是习惯读写大端字节序。所以,除了计算机的内部处理,其他的场合几乎都是大端字节序,比如网络传输和文件储存。
=============================2021-09-05================================
大端字节序,数据高字节存于内存低地址,数据低字节存于内存高地址;小端字节序反之。
这里需要特别强调的是,上面的说法中隐含的是从左往右地址增长。
因此我们说大端序有“大自然”的外号。即:大端序存储数据与我们的正常感觉相符合。从左往右存,左边是存储地址的低地址,但存储的是数据的高字节。比如0x123456H,12是数据的高字节,存在地址的最左边。小端序相反。