面试官:
请解释一下计算机的内存大小端问题。
应聘者回答参考:
1. 小端(Little Endian)
- 定义:数据的 低字节 存放在 内存的低地址,高字节存放在高地址。
- 特点:地址的高低与数据的位权结合,高地址对应高位,低地址对应低位。
- 应用:Intel x86 架构普遍采用 小端模式。
2. 大端(Big Endian)
- 定义:数据的 高字节 存放在 内存的低地址,低字节存放在高地址。
- 特点:类似于我们平常书写数字或阅读字符串的顺序,从左到右依次排列。
- 应用:IBM PowerPC 等架构常用 大端模式。
3. 举例说明
以 16 进制数 0x12345678
为例(占 4 字节):
-
小端模式(Intel x86)
低地址 → 78 56 34 12 ← 高地址
-
大端模式(IBM PowerPC)
低地址 → 12 34 56 78 ← 高地址
4. 如何理解
- 无论大端还是小端,CPU 访问内存时都是从低地址到高地址顺序读取。
- 差别仅在于:在低地址处存放的是数据的高字节还是低字节。
总结:
- 小端 → 低字节放低地址(Intel 主流)。
- 大端 → 高字节放低地址(IBM 等架构)。
- 本质是不同硬件对数据在内存中存储顺序的选择。
😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。