位、字节与字

→计算机组成原理知识地图


先分清三个单位

  • bit,位,是最小的信息单位,一位只能表示 01
  • Byte,字节,通常规定 1 Byte = 8 bits
  • Word,字,是处理器一次自然处理的数据宽度,大小和具体机器有关,不是固定值

很多人会把 ByteWord 混在一起,但它们不是一回事:

  • Byte 是比较稳定的存储单位,现代计算机里通常就是 8 位
  • Word 是和处理器位宽相关的体系结构概念,在不同机器上可能不同

为什么字节通常是 8 位

现代计算机几乎都把字节定义为 8 位,因此内存按字节编址时,每个地址通常对应 1 个字节。

所以我们平时看到:

  • 1 Byte = 8 bits
  • 8 KB = 8 × 1024 Bytes

这些说法讨论的都是存储容量或内存地址单位,不是在讨论处理器一次能处理多宽的数据。

什么是字

Word 可以理解成处理器最顺手、最自然处理的一组二进制位。它通常和寄存器宽度、数据通路宽度、机器位宽密切相关。

常见情况:

机器类型1 Word 常见大小
16 位机16 bits = 2 Bytes
32 位机32 bits = 4 Bytes
64 位机64 bits = 8 Bytes

所以:

  • 在 32 位机里,1 Word 常常是 4 Bytes
  • 在 64 位机里,1 Word 常常是 8 Bytes

这也是为什么同样一个“字”,换一台机器后大小可能变了。

为什么 STM32 里常说 1 Word = 4 Bytes

STM32 常见内核是 32 位的,因此在很多 STM32 语境里:

  • 1 Word = 32 bits = 4 Bytes
  • Half Word = 16 bits = 2 Bytes
  • Byte = 8 bits

这里的重点不是 STM32 特殊,而是因为它属于 32 位机,所以它的“字”通常按 32 位理解。

怎样避免混淆

可以直接记住下面这组关系:

单位本质是否固定
bit最小二进制单位基本固定
Byte存储和编址常用单位,通常是 8 位现代系统里基本固定
Word处理器自然数据宽度不固定,和机器位宽有关

一个容易出现在工程里的例子

如果某个 RTOS 里栈深度单位写的是“字”而不是“字节”,就不能直接把它当成字节数理解。

例如在 32 位机中:

  • 栈深度写 128
  • 若单位是 Word
  • 那真实空间通常是 128 × 4 = 512 Bytes

所以先看清单位到底是 Byte 还是 Word,否则很容易把内存大小算错。

存储容量单位:K → M → G → T

单位2 的幂精确值
K1,024
M1,048,576
G1,073,741,824
T1,099,511,627,776

继续看