从CPU底层理解小端,豁然开朗

  1. 核心定义:什么是“端”?
    这里的“端” (Endian) 实际上是指数据的字节序 (Byte Order)。 当一个数据(比如 int)跨越多个字节时,我们必须决定:哪个字节(8bit)放在内存的低地址(起始位置)?

我们设定一个标准的 16 进制数用来演示:0x12345678
image

  1. 为啥要这么设计?
    小端 (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 本地环境。

posted @ 2025-12-10 09:41  spongie  阅读(0)  评论(0)    收藏  举报