二进制词头

计算领域,二进制词头IEEE 1541-2002)被用作表示大的数字,采用2的幂而不是用10的幂。所有词头都是1024(210)相乘而不是在国际单位制词头采用的10进制“1000”(103)。尽管有可能混淆,二进制词头经常被写做和发音成和国际单位制词头完全一样,而不是使用下面描述的国际电工委员会(IEC)系统。

字节的次方单位
十进制前缀
(SI)
名字 缩写 次方
千字节 kB 103
兆字节 MB 106
吉字节 GB 109
太字节 TB 1012
拍字节 PB 1015
艾字节 EB 1018
泽字节 ZB 1021
尧字节 YB 1024
ronnabyte RB 1027
quettabyte QB 1030
二进制前缀
(IEC 60027-2)
名字 缩写 次方
kibibyte KiB 210
mebibyte MiB 220
gibibyte GiB 230
tebibyte TiB 240
pebibyte PiB 250
exbibyte EiB 260
zebibyte ZiB 270
yobibyte YiB 280

历史

使用前缀”(kilo-)、“”(mega-)、“”(giga-)等,以及缩写符号“k”、“M”、“G”等(参见下表:千的特性),在二进制上领域会引起严重的混淆。

1999年1月,国际电工委员会(IEC)引入了“kibi-”、“mebi-”、“gibi-”等词头以及缩写符号“Ki”、“Mi”、“Gi”等来明确说明二进制乘数计数。[1]

二进制词头已经被很多其他组织采用了,比较著名的有电气电子工程师协会(参见IEEE 1541),欧洲联盟(作为一致性文件HD 60027-2:2003-03[2])。然而,缺少官方支持,二进制词头还没有广泛被制造业者和个人采用,很多人继续在二进制领域使用国际单位制词头。

国际标准

国际单位制

名称 符号 2B 展开 1000D
kilo- k/K 210 = 1,024 > 10001
mega- M 220 = 1,048,576 > 10002
giga- G 230 = 1,073,741,824 > 10003
tera- T 240 = 1,099,511,627,776 > 10004
peta- P 250 = 1,125,899,906,842,624 > 10005
exa- E 260 = 1,152,921,504,606,846,976 > 10006
zetta- Z 270 = 1,180,591,620,717,411,303,424 > 10007
yotta- Y 280 = 1,208,925,819,614,629,174,706,176 > 10008

除了“K”以外,一个字母的缩写在国际单位制词头是唯一的,可以与“k”互换(在国际单位制词头里,“K”代表热力学温标,“k”代表1000)。

在精确度不是很重要的上下文中,如文件和内存大小,这些词头被广泛使用,但是和国际单位制词头的定义相冲突。国际单位制词头的名字和值在1960年国际单位制词头标准中制订,是1000的乘幂值。2005年,标准字典不承认这些词头的二进制意义。

国际计量局(维护国际单位制词头的机构)特别禁止二进制的用法,推荐使用IEC词头(二进制词头)作为一种改变方法。[3]

有些人建议“k”代表1000,而“K”代表1024,但是更高的词头不能这样扩展使用并且从来没有被广泛承认过。

尽管从理论上来讲,可以在密码学数据压缩、数据传输率领域找到用二进制词头表示位或者字节的应用,但是从来没有实际应用过。

非正式的,词头有自己的使用方法。可能听过“一个40K的文件”(40“二进制”千字节)或者“一个2M的因特网连接”(每秒2“十进制”兆比特)。什么单位被使用和乘幂是二进制还是十进制,依赖于上下文并且不能由单位单独确定。

ISO/IEC

1999年,国际电工委员会(IEC)公布了修正2:“IEC 60027-2:电工技术应用的字母符号—第二部分:通信和电子。”这个标准,在1998年通过,介绍了词头“kibi-”、“mebi-”、“gibi-”、“tebi-”、“pebi-”、“exbi-”,作为二进制乘幂的计数方法。名字的前两个字母来源于原来的国际单位制词头(例如, kilo binary byte缩写为“kibi-Byte”、“kiB”、“kibi-byte”),而后面的“bi”是二进制的缩写。同时明确定义,从IEC的观点来看,国际单位制词头只有十进制的意义而不再用作二进制的意义。

修正在标准的下一版:“IEC 60027-2 (2000-11) Ed. 2.0”。第二版规定最高到“exbi-”,但是在2005年,第三版加入了“zebi-”和“yobi-”这样所有的标准的国际单位制词头都有了他们的二进制计数伙伴。

2008年,ISO/IEC IEC 80000-13:2008标准取消并取代第3.8和3.9的IEC 60027-2:2005(二进制前缀倍数),增加了明确的定义和一些数量[4][5]

名称 符号 2进制 16进制 10进制
kibi Ki 210 162.5 0x400 = 1,024 > 103
mebi Mi 220 165 0x10 0000 = 1,048,576 > 106
gibi Gi 230 167.5 0x4000 0000 = 1,073,741,824 > 109
tebi Ti 240 1610 0x100 0000 0000 = 1,099,511,627,776 > 1012
pebi Pi 250 1612.5 0x4 0000 0000 0000 = 1,125,899,906,842,624 > 1015
exbi Ei 260 1615 0x1000 0000 0000 0000 = 1,152,921,504,606,846,976 > 1018
zebi Zi 270 1617.5 0x40 0000 0000 0000 0000 = 1,180,591,620,717,411,303,424 > 1021
yobi Yi 280 1620 0x1 0000 0000 0000 0000 0000 = 1,208,925,819,614,629,174,706,176 > 1024
- - 290 1622.5 0x400 0000 0000 0000 0000 0000 = 1,237,940,039,285,380,274,899,124,224 > 1027
- - 2100 1625 0x10 0000 0000 0000 0000 0000 0000 = 1,267,650,600,228,229,401,496,703,205,375 > 1030

例如:300 GB ≅ 279.5 GiB(= 0x117.6592E GiB = 0x45D96.4B8 MiB = 0x1176592E KiB = 0x45D964B800 bytes)。

与十进制的比较

请注意,随着大小增加,百分比差距在十进制和二进制之间变大,从2.4%(千-K)到超过25%(quetta-Q)。

名称 Bin ÷ Dec Dec ÷ Bin 举例 百分比
kilobyte : kibibyte 1.024 0.976 100 kB ≅ 97.6 KiB +2.4%或−2.3%
megabyte : mebibyte 1.049 0.954 100 MB ≅ 95.4 MiB +4.9%或−4.6%
gigabyte : gibibyte 1.074 0.931 100 GB ≅ 93.1 GiB +7.4%或−6.9%
terabyte : tebibyte 1.100 0.909 100 TB ≅ 90.9 TiB +10%或−9.1%
petabyte : pebibyte 1.126 0.888 100 PB ≅ 88.8 PiB +12.6%或−11.2%
exabyte : exbibyte 1.153 0.867 100 EB ≅ 86.7 EiB +15.3%或−13.3%
zettabyte : zebibyte 1.181 0.847 100 ZB ≅ 84.7 ZiB +18.1%或−15.3%
yottabyte : yobibyte 1.209 0.827 100 YB ≅ 82.7 YiB +20.9%或−17.3%
ronnabyte : - 1.238 0.808 - +23.8%或-19.2%
quettabyte : - 1.268 0.789 - +26.8%或-21.1%

使用方法

软件

到2010年,多数软件不再以二进制或十进制来表示位元数值[注 1]IEC二进制命名转换方法已被少数企业采用,但是并不普遍。IEC引入的明定目标之一就是“保留SI十进制倍数的前置表示,此表示式可以明确清楚表示”[6]。像fdisk/cfdiskparted还有apt-get等这些软件是以它们专有的SI十进制表示法来显示。

发音

在英语里面,二进制词头的前面的音节发音和相应的国际单位制词头相同,后一个音节发作"bee"。

计算机内存

 
这些是容量536,870,912字节(512×220)的内存,都被标上“512MB”容量的标签

大部分计算机内存,如随机访问存储器只读存储器闪存是用二进制表示的。这是关于内存最自然的配置方法,因为连接的地址线有对应的合法地址,这样可以很方便地聚合成更大块的内存。

硬盘

硬盘制造商用十进制来表示容量。这种用法有很长久的传统,甚至在国际单位制词头在1960年采用前就开始使用了。例如,第一个IBM350的硬盘有5,000,000个6比特字在100个字扇区(如块)组合起来。这出现在国际单位制词头之前。

闪存

USB闪存是一种记忆卡,一般是用十进制兆字节表示,如1GB、 2GB、 4GB、 8GB、 16GB、 32GB、 64GB、 128GB、 256GB、 512GB(0.5TB)、 1024GB(1TB)、 2048GB(2TB)等,亦常用2nGB作为容量。

CD

CD通常用二进制表示。一个“700MB”(或“80分钟”)的CD的容量大概是700MiB。[7]然而,DVD的容量是用十进制表示的。一个“4.7 GB”的DVD通常的容量是4.38GiB。[8]

总线

总线带宽是用十进制表示。不是因为硬盘的容量采用了十进制,也不是因为比特率,而是因为时钟速度。如 "PC3200"内存运行在一个双200 MHz总线上,每个时钟周期传送8字节数据,因此带宽是200,000,000×2×8 = 3,200,000,000字节/秒。

争议

一些现代的电脑用户认为,内存和硬盘都是存储工具,并且希望它们的容量可以用同一种方法度量。操作系统经常用二进制来报告磁盘空间的现状使这种期望加强了。结果是买一个“30 GB”的硬盘会明显少了容量,因为Microsoft Windows不会报告“30 GB”,而是用两种方法来报告硬盘的容量:“30,064,771,072字节”和“28 GB”。这引起了混淆并导致法律纠纷,而有时候由于其他技术原因,如在硬盘文件系统里面错误地分区及考虑格式化和未格式化的容量的时候更糟糕。

注释

  1. ^ 十进制词头是表示1千的整数次的词头。例如,“Kilo”表示1000,“mega”表示10002或100万,“giga”表示10003或10亿,等等。SI词头是十进制词头。

参考文献

  1. ^ Amendment 2 to IEC International Standard IEC 60027-2: Letter symbols to be used in electrical technology—Part 2: Telecommunications and electronics [1]页面存档备份,存于互联网档案馆
  2. ^ HD 60027-2:2003页面存档备份,存于互联网档案馆) Information about the harmonization document (obtainable on order)
  3. ^ The International System of Units, 8th edition, 2006页面存档备份,存于互联网档案馆)—Side note in section 3.1—SI prefixes
  4. ^ niso, New Specs and Standards. ISO. [2008-12-08]. (原始内容存档于2008-12-08). 
  5. ^ Prefixes for binary multiples. IEC. [2016-09-24]. (原始内容存档于2016-09-25) (英语). 
  6. ^ IEEE Std 1541-2002: IEEE Trial-Use Standard for Prefixes for Binary Multiples (PDF). Reaffirmed 27 March 2008. 12 February 2003 [2007-07-29]. ISBN 0-7381-3385-X. doi:10.1109/IEEESTD.2003.94236. 
  7. ^ Data capacity of CDs. [2007-01-18]. (原始内容存档于2006-07-15). 
  8. ^ Understanding Recordable and Rewritable DVD (PDF). [2007-01-18]. (原始内容 (PDF)存档于2009-04-19). 

参见

外部链接