基础知识101 || 谁偷走了我的硬盘空间?
你好,好久不见!
你即将阅读的此篇推送可以解决以下问题:
为什么我斥巨资购买的 1T/2T 硬盘到手会缩水?
是不是厂商在偷工减料?
本期内容我们将解答这个核心疑问。
一、一切的根源
细心的你肯定已经发现,日常生活中的单位存在一套常见的前缀:
| 缩写 | 全程 | 中文 | 大小 | 计数 |
| K | kilo | 千 | 千 | 10^3 |
| M | mega | 兆 | 百万 | 10^6 |
| G | giga | 吉 | 十亿 | 10^9 |
| T | tera | 太 | 万亿 | 10^12 |
这样一套前缀可以应用于功率(瓦)、电压(伏)、频率(赫兹)等各种领域的单位。但是到计算机领域,它产生了一些微妙的变化。
由于计算机底层广泛采用二进制,而用二进制来方便地表示以 10 为底的幂次是困难的,计算机行业诞生之初便改用以 2 为底的幂次来定义这一套前缀,产生了:
| 缩写 | 全称 | 中文 | 大小 |
| KB | kilobyte | 千字节 | 2^10 字节 |
| MB | megabyte | 兆字节 | 2^20 字节 |
| GB | gigabyte | 吉字节 | 2^30 字节 |
| TB | terabyte | 太字节 | 2^40 字节 |
这就是大家所熟悉的
1 MB = 1024 KB
1 GB = 1024 MB
...
我们在本文里称其为二进制单位,区别于十进制单位。
二、国际电工委员会的搅局
1999 年,国际电工委员会(IEC)发声:
计算机中的K、M、G、T等也应该和其他统一, 采用十进制!
作为行业的权威之一,其将计算机中的 K、M、G、T 等前缀以十进制的形式重新纳入SI体系(国际单位制),并且给二进制单位取了一个新名字。在 IEC 颁布的国际统一标准 IEC 60027-2 下:
| SI 十进制 | IEC 二进制 | 容量关系 |
| kilobyte (kB)[1] | kibibyte (KiB) | kB ≈ 97% KiB |
| megabyte (MB) | mebibyte (MiB) | MB ≈ 95% MiB |
| gigabyte (GB) | gibibyte (GiB) | GB ≈ 93% GiB |
| terabyte (TB) | tebibyte (TiB) | TB ≈ 91% TiB |
其中的 bi/i 就代表 binary(二进制)。也就是说,IEC 重新确定了 MB、GB 等符号为十进制,并将传统的、你我熟悉的二进制含义迁移到了 MiB、GiB 这一套新符号上。
💡 提示
为什么 IEC 要大闹单位?
由表格第三列可见,随着数量级的增大,采用二进制和十进制的两套单位会“渐行渐远”。这个误差也许在计算机发明之初还不足挂齿,但在信息量爆炸的今天,足以造成严重的误导。
三、道理我都懂,但我没见过 MiB?
读到这,你或许会有一个想法:
可是计算机跟其他的领域确实不一样,用二进制貌似确实更合理啊?
实际上,不只你这样想!
外行指导内行!
JEDEC 固态技术协会(一看这名字就很内行)就对 IEC 的做法嗤之以鼻。微软,就始终在 Windows 系统内遵循 JEDEC 的惯例,采用着传统的二进制 KB、GB 等单位。
但总的来说,IEC 并不是一味地弃用二进制,而是希望十进制和二进制并行,标注清楚、理清误会,是更加先进的做法。
四、所以,到底谁动了我的硬盘
你应该已经有了一个答案,但等等:
那我的 16 GB 内存条怎么没在 Windows 上显示缩水?
这里其实还有一个关键的知识点:
📝 笔记
自计算机诞生以来,内存容量计算就始终以 2 为底,因为这对应了二进制底层;
但硬盘并不是!
- 内存是逻辑电路,直接和 CPU 地址总线绑定。
- 而机械硬盘(HDD)说到底,就是用来存储字节的地方。
1000 个字节和 1024 个字节,对机械硬盘的制造而言没有任何区别,所以机械硬盘其实一直沿用着制造业常见的十进制标准。
而后续诞生的固态硬盘(SSD)虽然在闪存颗粒的排列上确实需要遵循 2 的幂次数值,但由于 SSD 的工作原理影响,以及大众已经建立起的对硬盘存储容量的认知,厂商选择了将其“裁剪”到对应的十进制整数,最终同样呈现为十进制容量。
因此,对于按照十进制计算的 1 TB 硬盘:
Windows:JEDEC 单位 931 GB[2]
macOS:SI 单位 1 TB
Linux:IEC 单位 931 GiB[3]
对于按照二进制计算的 16 GB(GiB)内存
Windows & macOS:JEDEC 单位 16 GB
Linux:IEC 单位 16 GiB[3]
因此,倒也不是硬盘厂商偷工减料,只是一些标准不同的历史遗留问题在耍花招!
现在,也有一些呼吁微软修改单位的呼声。这样强迫症们就能在资源管理器里看到整数的硬盘容量了~
五、注解
[1] 由于 K 在 SI 体系下为温度的标准单位,此处采用 k
[2] 此处为估算值,以实际大小为准
[3] Linux 存在诸多发行版,此处讨论主流版本

