从CPU底层理解小端,豁然开朗
- 核心定义:什么是“端”?
这里的“端” (Endian) 实际上是指数据的字节序 (Byte Order)。 当一个数据(比如 int)跨越多个字节时,我们必须决定:哪个字节(8bit)放在内存的低地址(起始位置)?
我们设定一个标准的 16 进制数用来演示:0x12345678

- 为啥要这么设计?
小端 (Little-Endian)方便机器跑,方便做运算
1、类型转换快。把 int (4字节) 强转成 char (1字节),地址不需要变(都指向低位)。
2、加法运算顺手。CPU 从低地址读起,正好是低位,直接开始算加法进位。
先把低位字节(个位)放在内存的第一个位置(低地址)。CPU 读取数据时,首先读到的就是低位,可以立刻开始计算。
流水线优化:当 CPU 还在处理低位加法和进位的时候,后面的高位字节数据正好接着读进来。这样“读数据”和“算数据”就能完美配合,不用干等。
🅰️ 大端 (Big-Endian)
口诀:“大头在前” (Big end first)。
联想:符合人类直觉。就像我们读书写字,从左到右,先写大的(万位),最后写小的(个位)。
应用场景:网络协议 (TCP/IP) 都是大端,也叫“网络字节序”。
🅱️ 小端 (Little-Endian)
口诀:“小小在下” (Little end at Low address)。
联想:低位 放在 低地址。
应用场景:x86 架构 CPU (Intel/AMD) 也就是我们要打交道的 Linux/Windows 本地环境。

浙公网安备 33010602011771号