数据存储使用两套并行的前缀系统,采用不同的数值基数。十进制(SI)系统使用 10 的幂次:1 KB = 10^3 B、1 MB = 10^6 B、1 GB = 10^9 B,向上扩展到 1 YB = 10^24 B(yotta,1991 年 CGPM 增加;ronna 10^27 和 quetta 10^30 于 2022 年增加)。二进制系统在 IEC 80000-13:2008(最初为 IEC 60027-2:1999)中正式定义,使用 2 的幂次并以显式 "i" 中缀书写:1 KiB = 2^10 B = 1,024 B、1 MiB = 2^20 B、1 GiB = 2^30 B、1 TiB = 2^40 B、1 YiB = 2^80 B。IEC 名称(kibi、mebi、gibi、tebi、pebi、exbi、zebi、yobi)的存在正是为了消除历史歧义 — 在网络规格书中 1 KB 表示 1,000 B,而在操作系统文件列表中表示 1,024 B。
厂商和操作系统的选择遵循行业惯例而非用户偏好。硬盘、SSD 和云存储厂商使用十进制单位,因为驱动器的原始扇区容量可以干净地映射到 10^n 次方(一块 1 TB 硬盘包含 1,953,525,168 个 512 B 的 LBA = 10^12 B)。Windows 资源管理器历史上显示二进制值但使用十进制前缀标注(实际为 931 GiB 却显示为「931 GB」),这是「我的硬盘比标称小」投诉的最常见原因;macOS 在 10.6 Snow Leopard(2009 年)切换为真正的十进制显示,大多数 Linux 文件管理器也遵循相同的 SI 惯例。网络吞吐量以比特每秒报告(1 Gbps = 10^9 bit/s = 125 MB/s 十进制理论最大值),而文件大小以字节为单位,因此在一个完美的千兆链路上传输 1 GB 文件需要 8 秒 + TCP/IP 开销。
在内部,转换器将每个输入规范化为比特(最小原子单位:1 字节 = 8 比特,遵循 IEC 80000-13 和历史上的 PDP-10/IBM 360 惯例),然后乘以目标因子,避免了在长链 KB → MB → GB → TiB 分步计算时累积的精度漂移。IEEE 754 双精度浮点数提供约 15-17 位有效十进制数字,精确覆盖到约 9 PB 的转换,在 EB 量级仍保持千字节精度。对于超过 2^53 比特(约 1 PiB)的值,工具会在需要精确字节计数时回退到 BigInt 算法,例如块存储分配报告。文件系统开销、RAID 校验和 SSD 预留空间不在单位换算范围内 — 一个全新格式化的 1 TB NTFS 卷在 MFT 和保留空间之前报告约 931 GiB,而设置了 copies=2 的 ZFS 会再次将用户可见容量减半。
十进制(SI)前缀:K=10^3、M=10^6、G=10^9、T=10^12、P=10^15、E=10^18、Z=10^21、Y=10^24(1991 年 CGPM);R=10^27、Q=10^30 于 2022 年 CGPM 增加二进制(IEC 80000-13:2008)前缀:Ki=2^10=1,024、Mi=2^20、Gi=2^30、Ti=2^40、Pi=2^50、Ei=2^60、Zi=2^70、Yi=2^80 — 显式 "i" 中缀消除了传统 KB 的歧义十进制与二进制的差距:1 GB = 0.9313 GiB(小 7.4%)、1 TB = 0.9095 TiB(小约 9.1%)、1 PB = 0.8882 PiB;这就是为什么 1 TB 硬盘在 Windows 中显示约 931 GB比特与字节:1 B = 8 bit(IEC 80000-13);网络速度使用小写 b(1 Gbps = 125 MB/s 十进制理论值,TCP/IP 开销后约 112 MiB/s)操作系统惯例:Windows 显示二进制值但使用十进制标签(「GB」实际为 GiB),macOS 10.6+ 使用真正的 SI 十进制,大多数 Linux 文件管理器遵循 SI;iOS 和 Android 以十进制 GB 报告存储字节序和字长是独立的问题:大端序(网络字节序,RFC 1700)vs 小端序(x86、ARM 默认),以及 8/16/32/64 位的字宽影响内存布局但不影响单位换算精度:IEEE 754 双精度可精确处理约 9 PB;转换器内部规范化为比特,超过 2^53 比特时切换到 BigInt 以保持存储分配报告的精确字节计数