常见的二进制代码存储在内存中时一共有两种方式: 大端存储 小端存储
以32位机器为例
unsigned int a = 0x12345678;
我们知道计算机在内存中存储的是二进制代码,大小端存储分别如下图所示:
内存地址: | 低地址 | -------------> | -------------> | -------------> | -------------> | 高地址 |
---|---|---|---|---|---|---|
小端: | / | 0x78 | 0x56 | 0x34 | 0x12 | / |
大端: | / | 0x12 | 0x34 | 0x56 | 0x78 | / |
这其中,大端存储方式和我们的阅读习惯相同,可以直接读作12345678
而小端,则与我们的逻辑习惯相同.高地址上存更加重要的数据.自我理解如下:
我们把0x12345678看成是在网络游戏中的dps,那么12000000就是我们最重要的输出伤害.后面345678加起来也没有前面一位输出来的高.因为进位了.
以下纯粹是个人猜测(完全可以不看!):
为什么会产生这样两种存储方式,既然我们阅读习惯是大端,普通人也可以清楚的理解大端存储的数据内容.为什么还要添加小端存储这种看起来有些扭曲的存储方式?
计算机读取内存数据从低地址向高地址读取?如果是这样,最重要的数据放在最后来读以降低错误率?否则我无法知晓为什么会出现截然不同的两种方式来存储一段相同的数据.业界顶端大佬的恶趣味?