数据的大小与单位
复习
- 计算机的历史:计算机从算盘、机械计算机发展到电子计算机,核心动力是让繁琐计算自动化
- 计算机的构成:计算机需要输入、输出、存储和处理功能;CPU 内的 ALU、控制器和寄存器共同处理指令和数据
- 计算机的数据表示:计算机用二进制表示数据,八进制和十六进制是二进制的简写
TL;DR
- 1 个二进制位是 1 bit(比特);8 个 bit 是 1 Byte(字节)
- 十进制单位使用 kB、MB、GB、TB 等,按 1000 进位;二进制单位使用 KiB、MiB、GiB 等,按 1024 进位
- 硬盘厂商通常按 GB 标注容量;采用二进制换算的系统会显示为较小的 GiB 数值
正文
上一章我们知道了计算机用 0 和 1 表示数据。但一个 0 或 1 能表示的信息太少,我们需要先给它们定一些“数量单位”,就像长度有米、厘米一样。
基本单位
为了方便计算机学界交流,这些有专业术语:
- 1 个二进制的 0 或 1 称为 bit,比特,用 b 表示
- 8 个二进制的 0 或 1 称为 Byte,字节,用 B 表示
- 8 是人为规定的,二进制表示一个数据会非常长,表示 0-9 都需要 4 个 bit
- 16 个 bit 为 Halfword,半字,用 H 表示(字和半字的概念以后会讲)
- 32 个 bit 为 Word,字,用 W 表示(字和半字的概念以后会讲)
注意区分大小写:b 是比特,B 是字节,二者相差 8 倍。以后看到网络带宽写着 100 Mbps 时,要记得除以 8 才是每秒多少字节。
更大的单位
字节仍然太小,一个文本文件动辄几 kB。数据大小有两套常用单位:
| 十进制单位 | 二进制单位 | 含义 |
|---|---|---|
| 1 kB | 1 KiB | 1000 B;1024 B(2¹⁰ B) |
| 1 MB | 1 MiB | 1000 kB;1024 KiB(2²⁰ B) |
| 1 GB | 1 GiB | 1000 MB;1024 MiB(2³⁰ B) |
| 1 TB | 1 TiB | 1000 GB;1024 GiB(2⁴⁰ B) |
十进制单位的前缀还可继续到 PB、EB、ZB;二进制单位对应 PiB、EiB、ZiB。日常交流常把 KB、MB、GB 误用于 1024 进位,遇到容量时要留意它实际采用的是哪套单位。
厂商的 1000 与计算机的 1024
存储厂商通常使用十进制单位:1 GB 就是 1000 MB。若系统使用二进制单位换算,同一块硬盘显示出来的 GiB 数值就会更小;有些系统仍把这个数值标成“GB”,更容易让人误会硬盘“缩水”。也有系统在硬盘容量表示时,全程使用十进制单位,因此显示值会更接近厂商标注。
严格来说,以 1000 为底的叫 kB、MB、GB;以 1024 为底的叫 KiB、MiB、GiB(Ki 读作“二进制千”)。记住单位名和底数是一对。
归根结底,“硬盘缩水”是一种“假象”。存储厂商按照 1024 计量的话,也会多花成本。是不是偷懒和想多赚钱,我们不知道,反正这个习惯就这样穿下来了,成为了传统。
思考题
你买了一块标注 500 GB 的硬盘,插上采用二进制换算的电脑后,系统显示约 466 GiB(有些系统仍会把它标成 GB)。
硬盘缩水了吗?为什么?如果缩水了,两者大约相差多少?
小结
知识点
- bit 与 Byte
- 字与半字
- KB、MB、GB、TB 等数据大小单位
- 1024 与 1000 的区别
参考资料
- ISO/IEC 80000-13:2008:信息技术中的量和单位
- Wikipedia(zh):字节:字节的定义
- Wikipedia(zh):二进制前缀:KiB 与 KB 的区别
思考题答案(仅供参考)
没有缩水。厂商标注的 500 GB 以 1000 为底,即 500 × 1000³ 字节;按 1024 为底换算,则是 500 × 1000³ ÷ 1024³ ≈ 466 GiB。二者表示的是同一块硬盘的同一个容量,只是单位和底数不同。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪