学计算机编程的都知道字节(byte)和位(bit)的概念,但是对于KB、kB、MB、MiB他们的之间的关系你真的懂么?你确信你没有搞错?

我们都知道

1 byte = 8 bits (1字节 = 8比特)

但是你知道1KB = ?B , 1kB = ?B么?KiB又是什么吗?

在此,我先列一个表格,看看里面的信息。

这里面列出了很多的单位,但是因为这些不同的单位给我们带来了许多的困挠。

硬盘容量缩水现象

对于容量的概念,有十进制和二进制两种计量方法。最常见的是硬盘、内存容量“缩水”的情况。对于计算机来说1M = 1024KB,但是厂家为了方便计算与生产,是以1M = 1000K字节计算容量,但是计算机主板、操作系统是按1024的关系来计算的。于是就出现了500G的硬盘,在实际电脑上显示才465G的情况。以下是计算公式:

500G 
= 500 × 1000 MB 
= 500 × 1000 × 1000 kB 
= 500 × 1000 × 1000 × 1000 B
= 500 × 109 B 
= 500 × 109 / 10243 GiB 
= 465 GiB

历史情况

出现这样的问题是有原因的。以前大多数情况下,工业界喜欢使用和国际单位制(International System of Units , 缩写SI)定义的kilo, mega, giga等前缀保持一致,他们都是1000进制的关系。但是在计算机界中,都是以2进制定义数据和信息的,许多的计算都是1024的关系。两者的不一致给人们造成了许多的困挠。

1998年12月,在电工技术领先的国际组织——国际电工委员会(International Electrotechnical Commission,IEC)制定了规范,使用新的一系列二进制乘数词头(binary prefixes)来无歧义地表示1024底数,他们有kibi、mebi、mebi、tebi、pebi、exbi,可以参考上面的表格。

此外,美国国家标准技术研究所(National Institute of Standards and Technology, NIST )规定的国际单位制前缀只能在十进制意义上使用,这个和SI是一致的:

kilobyte 表示 1,000 bytes megabyte 表示 1,000,000 bytes

二进制上使用新的术语

kibibyte (缩写 KiB) 表示 1024 bytes mebibyte (缩写 MiB) 表示 1,048,576 bytes gibibyte (缩写 GiB) 表示 1,073,741,824 bytes …

具体的数据可以参考上面的表格。

现在的使用情况

可以看到现在在做宣传的时候,硬盘、U盘上的数据都是使用MB、GB来表示1000的进制关系。但是在windows系统中,使用MB、GB等来表示1024的进制关系。就比如4GB的优盘,在windows上显示为3.8GB的容量。

在Linux系统中,已经开始使用KiB、MiB等由IEC制定的二进制前缀来表示数据了。还有一些其他的程序也开始使用IEC的标准。

建议

推荐大家使用IEC制定的标准来表示2进制前缀,避免不必要的麻烦。使用的场景可以是程序,论文,科普文章等地方。不要为了省事,引起歧义。

IEC的制定的二进制前缀缩写有KiB、 MiB 、GiB 、TiB 、PiB 、EiB 、ZiB 、YiB 。希望大家多多使用。

参考资料

  1. Binary prefix http://en.wikipedia.org/wiki/Binary_prefix
  2. Prefixes for binary multiples http://physics.nist.gov/cuu/Units/binary.html

声明:未经允许禁止转载 东东东 陈煜东的博客 文章,谢谢。如经授权,转载请注明: 转载自东东东 陈煜东的博客

本文链接地址: 你真的知道字节的换算单位关系么? – https://www.chenyudong.com/archives/bianry-prefixs.html