位、字节与字
先分清三个单位
bit,位,是最小的信息单位,一位只能表示0或1Byte,字节,通常规定1 Byte = 8 bitsWord,字,是处理器一次自然处理的数据宽度,大小和具体机器有关,不是固定值
很多人会把 Byte 和 Word 混在一起,但它们不是一回事:
Byte是比较稳定的存储单位,现代计算机里通常就是 8 位Word是和处理器位宽相关的体系结构概念,在不同机器上可能不同
为什么字节通常是 8 位
现代计算机几乎都把字节定义为 8 位,因此内存按字节编址时,每个地址通常对应 1 个字节。
所以我们平时看到:
1 Byte = 8 bits8 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 BytesHalf Word = 16 bits = 2 BytesByte = 8 bits
这里的重点不是 STM32 特殊,而是因为它属于 32 位机,所以它的“字”通常按 32 位理解。
怎样避免混淆
可以直接记住下面这组关系:
| 单位 | 本质 | 是否固定 |
|---|---|---|
bit | 最小二进制单位 | 基本固定 |
Byte | 存储和编址常用单位,通常是 8 位 | 现代系统里基本固定 |
Word | 处理器自然数据宽度 | 不固定,和机器位宽有关 |
一个容易出现在工程里的例子
如果某个 RTOS 里栈深度单位写的是“字”而不是“字节”,就不能直接把它当成字节数理解。
例如在 32 位机中:
- 栈深度写
128 - 若单位是
Word - 那真实空间通常是
128 × 4 = 512 Bytes
所以先看清单位到底是 Byte 还是 Word,否则很容易把内存大小算错。
存储容量单位:K → M → G → T
| 单位 | 2 的幂 | 精确值 |
|---|---|---|
| K | 1,024 | |
| M | 1,048,576 | |
| G | 1,073,741,824 | |
| T | 1,099,511,627,776 |