在文件系统中,KiB、MiB、GiB 与常见的 KB、MB、GB 的核心区别在于它们使用的进制基数不同:前者基于二进制(2 的幂),后者基于十进制(10 的幂)。这种差异源于计算机底层存储机制与人类日常计数习惯的冲突。
1. 定义与换算规则
| 单位 | 全称 | 进制基数 | 换算公式 | 实际字节数 |
|---|---|---|---|---|
| KiB | Kibibyte (千二进制字节) | $2^{10}$ | $1 text{ KiB} = 1024 text{ B}$ | 1,024 |
| MiB | Mebibyte (兆二进制字节) | $2^{20}$ | $1 text{ MiB} = 1024 text{ KiB}$ | 1,048,576 |
| GiB | Gibibyte (吉二进制字节) | $2^{30}$ | $1 text{ GiB} = 1024 text{ MiB}$ | 1,073,741,824 |
| KB | Kilobyte (千字节) | $10^3$ | $1 text{ KB} = 1000 text{ B}$ | 1,000 |
| MB | Megabyte (兆字节) | $10^6$ | $1 text{ MB} = 1000 text{ KB}$ | 1,000,000 |
| GB | Gigabyte (吉字节) | $10^9$ | $1 text{ GB} = 1000 text{ MB}$ | 1,000,000,000 |
注:后缀 "bi" 代表 binary(二进制),源自国际电工委员会(IEC)于 1998 年制定的标准,旨在消除歧义。而传统的 KB/MB/GB 在历史上常被混用,既可能指 1000 倍,也可能指 1024 倍。
2. 为什么会有这种混淆?
- 历史原因:早期计算机内存地址按 2 的幂增长(如 1K=1024),因此工程师习惯用 KB 表示 1024 字节。随着硬盘容量变大,为了营销方便,硬盘制造商开始使用十进制(1GB=10 亿字节)来标称容量,因为这样数字看起来更大。
- 操作系统行为:大多数操作系统(如 Windows)在显示文件大小或剩余空间时,仍然沿用旧习惯,将
1024称为KB/MB/GB。这导致用户购买的硬盘在电脑上显示的容量比标称值小。- 例如:一个标称 1 TB (1,000,000,000,000 字节) 的硬盘,在 Windows 中显示为约 931 GiB(即 $10^{12} / 1024^4$),用户常误以为硬盘坏了或被“偷”了空间。
3. 实际差异对比
以 1 GiB 和 1 GB 为例,两者的差距约为 7.37%:
$$
begin{aligned}
1 text{ GiB} &= 1,073,741,824 text{ Bytes}
1 text{ GB} &= 1,000,000,000 text{ Bytes}
text{差值} &= 73,741,824 text{ Bytes} approx 70.3 text{ MiB}
end{aligned}
$$
这意味着,如果你有一个 1 GiB 的文件,它比 1 GB 大得多;反之,当你看到硬盘标称 1 GB 时,它在二进制视角下只有约 0.93 GiB。
4. 总结与建议
- KiB/MiB/GiB:是精确的二进制单位,常用于操作系统内部计算、内存寻址以及 Linux 等对精度要求严格的场景。
- KB/MB/GB:在现代标准(IEC 60027-2)中,应严格定义为十进制单位(1000 进位),常用于硬盘、U 盘、SSD 等存储设备的厂商标称以及网络传输速率(Mbps)。
如何避免误解?
- 在阅读硬件规格书(如买硬盘)时,看到的 GB 通常指 $10^9$。
- 在查看操作系统属性(如右键“属性”看文件大小)时,显示的 GB 通常指 $2^{30}$。
- 最严谨的做法是关注 Byte(字节) 的绝对数量,或者明确区分大小写和前后缀(如坚持使用 KiB 而非 KB)。
PHPWP博客