引言
经常遇到容量、带宽的单位,MB,GB在进行单位换算时,总是傻傻分不清,查些资料浅记录一下。
公制(metric system)
又译米制,是一个国际化十进位量度系统。法国在1799年开始使用公制,是第一个使用公制的国家。源自公制的国际单位制已成为国际大多数国家的主要量度系统。美国是现今工业化国家中唯一未将国际单位制定义为官方量度系统的国家,不过自从1866年起也已开始在科研、医疗和军事领域使用国际单位制[1]。英国政府已承诺将许多量测单位改为公制系统,但民间还没有普遍使用,一般常用的单位仍是英制单位。
B和b
国际电工委员会(即International Electrotechnical Commission, IEC)与国际标准化组织(即International Standardization Organizat, ISO)于2008年联合颁布的技术标准ISO/IEC 80000-13《信息科学与技术》中的正式定义,字节的符号为大写英文字母“B”,而比特的符号为小写字母“b”。这也是kB与kb之间的区别——一个是“千字节”,一个是“千比特”。
实际上比特与字节都是十分常用的单位,只是二者常用的领域不同。字节常被用作数据储存容量的最小单位,而比特常被用作数据传输速率的最小单位,例如b/s(比特每秒,也写作bps),如果数据下载速率为810kb/s。
两种单位有着不同的常用领域。但用字节形容数据传输速度,用比特形容数据大小也是完全没有问题的,具体情况具体规范。
那么100M的带宽(也就是100Mbps),下载的理论速度是12.5MB/s。
单位制前缀
SI
国际单位制
国际单位制(法语:Système International d’Unités,简称SI),源于公制,是世界上最普遍采用的标准度量系统。国际单位制以七个基本单位为基础,由此建立起一系列相互换算关系明确的“一致单位”。另有二十个基于十进制的词头(前缀),当加在单位名称或单位符号前的时候,可用于表达该单位的倍数或分数。
在精确度不是很重要的上下文中,如文件和内存大小,这些词头被广泛使用来表示二进制,但是和国际单位制词头的定义相冲突。
IEC
二进制词头
KB / KiB,MB / MiB,GB / GiB,… 的区别是什么?
KB / KiB,MB / MiB,GB / GiB,… 的区别是什么?
1999年,国际电工委员会(IEC)公布了修正2:“IEC 60027-2:电工技术应用的字母符号—第二部分:通信和电子。”这个标准,在1998年通过,介绍了词头“kibi-”、“mebi-”、“gibi-”、“tebi-”、“pebi-”、“exbi-”,作为二进制乘幂的计数方法。名字的前两个字母来源于原来的国际单位制词头(例如, kilo binary byte缩写为“kibi-Byte”、“kiB”、“kibi-byte”),而后面的“bi”是二进制的缩写。同时明确定义,从IEC的观点来看,国际单位制词头只有十进制的意义而不再用作二进制的意义。
二进制词头已经被很多其他组织采用了,比较著名的有电气电子工程师协会(参见IEEE 1541),欧洲联盟(作为一致性文件HD 60027-2:2003-03[2])。然而,缺少官方支持,二进制词头还没有广泛被制造业者和个人采用,很多人继续在二进制领域使用国际单位制词头。
早期计算机的信息存储容量都很小。在这样的情况下,1 kB代表的到底是1000字节还是1024字节似乎并不是那么重要,毕竟这24字节的差异在1000字节面前也只是2.4%的误差而已。随着大小增加,百分比差距在十进制和二进制之间变大,从2.4%(千-K)到超过25%。
kB与KiB这两个单位之间的歧义就消失了吗?事实上并没有。许多计算机操作系统,例如当今应用非常广泛的Windows系统就保留了“kB系列”的单位,使用1 kB来指代1024 B。而与电脑操作系统上1 kB = 1024 B不同的是,许多硬盘制造商的指标中却又保留着1 kB = 1000 B的标准。因此很多消费者就会注意到自己购买得明明是“1 TB”(1, 099, 511, 627, 776 B)硬盘,但在插到电脑上后硬盘的大小却“缩水”成了“954 GB”(1, 000, 000, 000, 000)的情况。这就是计算机操作系统和硬盘制造商所使用的单位标准不同而导致的,也是业界标准混乱的一个体现。
什么单位被使用和乘幂是二进制还是十进制,依赖于上下文并且不能由单位单独确定。
场景
硬盘
硬盘制造商用十进制来表示容量。这种用法有很长久的传统,甚至在国际单位制词头在1960年采用前就开始使用了。例如,第一个IBM350的硬盘有5,000,000个6比特字在100个字扇区(如块)组合起来。这出现在国际单位制词头之前。所有硬盘驱动器制造商都使用SI前缀声明容量。
内存
由于当前硬件寻址系统的固有二进制设计,许多计算机程序任务以 2 的幂来引用内存。所以一直是按照JEDEC 内存标准来使用传统前缀。
windows操作系统
采用二进制报告容量,买一个30 GB(
30×10^9字节
)的硬盘会明显少了容量,因为Microsoft Windows不会报告30 GB,而是用两种方法来报告硬盘的容量:30,064,771,072字节和28 GB(28×2^30字节
)。
macOS系统
现在Apple 产品规范、iOS 和 macOS(包括Mac OS X Snow Leopard:10.6 版)现在使用SI 前缀报告容量。