在计算机中的数据存储,主要有两种模式:大端模式(big-endian)和小端模式(little-endian)。
对于某个 16 进制的数据 x = 0x01234567
,首先要知道的是,01
(0x01) 在数据中是高位字节,而 67
(0x67) 则在数据中处于低位字节。
假设 x 将被存储在 0x100
起始的地址,由于 x 占用 4 个字节,存储的最高地址就是 0x103
,那么
- 大端模式,就是把高位字节数据(0x01)存储在低地址(0x100),而把低位字节数据(0x67)存储在高地址(0x103)。
- 小端模式,就是把低位字节数据(0x67)存储在低地址(0x100),而把高位字节数据(0x01)存储在高地址(0x103)。
最终存储的情况如下所示:
由于数据的写法是从高位往低位变化,比如 10 进制的 123,是一百二十三,对于二进制也是如此,因此高位存储可能会更加符合人类的阅读习惯。
然而对于计算机来说,它们是从低位往高位存储数据,因此直接把低位的数据存储在低地址,反而更方便按顺序读取。
这也是为什么在现代电脑中小端模式反而更加普遍。