「普遍的虚标」
购买存储,或含有存储功能的设备时,往往都知晓其容量会缩水。比如 512 GB 的硬盘,在系统中查看,仅有 460+ GB 的可用空间,是正常的。
那么为什么会有这种差异?主要原因是存储与系统的单位不同,Windows 使用的是 1024³ 字节表示 GB(二进制),而其他许多系统(比如 iOS、macOS),以及存储设备制造商,使用 1000³ 字节表示 GB(十进制)。
十进制看起来更简单,为何不使用?原因是内存的设计原理,二进制更便于设计。比如在 KB 时代,想用较小的颗粒要凑出 128 KB₁₀ 的内存,需要:
64 KB₂ (65,536 B) + 32 KB₂ (32,768 B) + 16 KB₂ (16,384 B) + 8 KB₂ (8,192 B) + 4 KB₂ (4,096 B) + 1 KB₂ (1,024 B) = 128,000 B = 128 KB₁₀
而两枚 64 KB₂ 就能凑出 128 KB₂,所以当时生产内存的公司,一起建立了
JEDEC 存储器标准。该标准借用了国际单位的前置词 kilo-、mega- 和 giga-,但 JEDEC 知道国际单位都是十进制,可能引起误会,所以只用大写的简称:KB、MB 和 GB,不使用全称,用这种方法来与十进制区别。
如果 JEDEC 的这些单位都推广开,大家应该也会接受吧,但存储设备制造商显然没有认可 JEDEC 设计的二进制单位,而是使用十进制单位。这也就导致了二者混淆的局面。
对此,国际电工委员会(IEC)在 1997 年发布了指导标准
IEC 60027-2,重新定义了二进制的单位前缀为 kibi-、mebi- 和 gibi-(缩写为 Ki-、Mi- 与 Gi)。从设计的角度来说,这很优美。如果需要,就连二进制的距离,也能用 Kim、Mim 和 Gim 来表示。
但储存厂商与 JEDEC 双方,都不想放弃自己的单位定义,都觉得自己的单位更有用,也就造成了如今混乱的局面。Windows 开发者
Raymond Chen 认为 IEC 的二进制前缀几乎没人遵守,所以 Explorer 继续沿用之前的写法。
但存储设备制造商也很倔强,明知道 PC 系统占有量最大的 Windows 使用二进制单位,也不愿在产品包装上注明自己的容量相当于多少 GiB(小字也行)。以为写上 1GB = 1,000,000,000 bytes,就能对消费者负责了?实际上是故意利用这种差异,在合法虚标吧?
附言:目前使用二进制 GiB 的有 Windows 系统,部分 Android 系统,常见的网盘(如
iCloud),以及电脑内存条。十进制 GB 的有存储设备制造商,Apple 的系统,
手机内存。1.44 MB 软盘将二者的结合……是 1440 KiB。
#考据 #历史