每次用到我都会忘记,我觉得有必要用一篇笔记来串联这些基础的知识点,于是写了这篇笔记。
不过,因为我实际上是复习而不是从零学习,并且没有那个心力,所以我不能保证这个笔记对计算机初学者友好,但我尽力不把事情讲太复杂。
存储大小
存储层面的常用大小是 bit, byte, kb, mb… 等等这种。
原子单位是 bit(位),可以存 0 或 1 两种状态。这个是最出名而且常见的。
byte(字节)是 8 bit 组成的序列。这个也是存储层面常见的单位(也包括网络传输层面)。
而计算处理层面常用的则是 word, dword, qword 这种。这类都是基于 word(字)的概念,字用来表示一次操作能处理的数据长度,而 dword 是两倍字大小,qword 是四倍字大小。
字
字来源太复杂了,这里直接 copy ai 回答。
字是 ISA/CPU 计算模型里用来统一“自然处理宽度”的抽象单位;具体多宽由该 CPU/ISA 决定。
字怎么来的:从硬件的“自然粒度”来:寄存器多宽、ALU 一次整数运算多宽、数据总线/内存访问一次搬多少、地址怎么生成。早期机器很多按字组织内存和寻址,后来字节寻址普及,“字”就更多退到 ISA/ABI 层,表示这台机器的自然宽度。
用来做什么:给计算模型一个统一约定,避免在指令、汇编、ABI 里到处写死具体位数。它统一的是粒度,不是容量:
- 寄存器和整数运算的自然宽度;
- 指针/地址宽度常与之相关;
- 对齐、结构体布局、调用约定;
- 内存访问和原子性的自然单位。
出现在什么概念领域:最重要就两个:ISA/CPU 机器模型 和 ABI/编译器目标模型。指针、对齐、原子性都是它露出来的地方,不是它的全部。
所以一句话:KB/MB 管“有多少”,字管“按多大一块来算/放/对齐”;字是 ISA 和 ABI 里的自然宽度约定,不是存储容量单位。 你把“机器无关”改成“机器相关但对实现细节抽象”,你的总结就基本成立了。