"MiB" 中的 "i" 代表什么意思?

我看到在Ubuntu中使用"MiB"作为表示大小的单位。MiB代表什么?特别是那个"i"代表什么?

MB和MiB有什么区别?参考https://askubuntu.com/a/36114/230288 - Charlie Parker
4个回答

有两种常用的方法来表示数量级,以便更容易阅读大数。首先,你可以使用10的幂次方。
10⁰ = 1
10¹ = 10
10² = 100
10³ = 1000

或者是二的幂次方
2⁰ = 1
2¹ = 2
2² = 4
2³ = 8

使用这些系列作为基础,我们得到了数字1000和1024(10³和2¹⁰),表示一个“千”。 一个字节有八个位。所以一个千字节等于8×10³ = 8000位。硬盘制造商使用这种方法。在计算机科学中,人们通常使用二的幂次方,所以一个千字节等于8×2¹⁰ = 8192位。 随着数字的增大,差异只会变得更大。有些人甚至混合使用这两种系统,以获得适合包装上的漂亮数字。这就是为什么1.44MB软盘既不是1.44兆字节也不是1.44兆比特(它们使用1024×1000)。 “i”的逻辑是这些术语源自原始的国际单位制前缀,如千、兆、吉,但加入了“二进制”一词。因此,“i”是“binary”的第二个字母。“kibibyte”的记忆口诀是“kilo binary byte”,并且“KiB”发音为“Kibibyte”。
所有这些都在IEC_80000标准中定义。
请注意,mebibyte并非定义为2²⁰,而是定义为(210)2,尽管它们相等。gibibyte是(210)3,tebibyte是(210)4,依此类推。
Prefix       Bytes                      Prefix       Bytes
1 Byte     = (2^10)^0 = 1               1 Byte     = (10^3)^0 = 1
1 Kibibyte = (2^10)^1 = 1024            1 Kilobyte = (10^3)^1 = 1000
1 Mebibyte = (2^10)^2 = 1048576         1 Megabyte = (10^3)^2 = 1000000
1 Gibibyte = (2^10)^3 = 1073741824      1 Gigabyte = (10^3)^3 = 1000000000
1 Tebibyte = (2^10)^4 = 1099511627776   1 Terabyte = (10^3)^4 = 1000000000000

请记住,很多时候,当作者提到“千字节”时,实际上指的是“基比字节”。正如兰迪·奥里森所指出的那样,二进制单位直到1999年才被引入。

正如评论中的nealmcb发现的那样,有一个官方政策:
https://wiki.ubuntu.com/UnitsPolicy

简而言之,该政策提醒开发人员要么使用国际单位制(SI)前缀,要么使用IEC前缀,但绝不能混用。其中还提到:

对于文件大小,有两种可能性:

  • 同时显示基于10进制和基于2进制(按照此顺序)。例如Linux内核:“2930277168 512字节硬件扇区:(1.50 TB/1.36 TiB)”
  • 仅显示基于10进制,或者给用户选择在基于10进制和基于2进制之间进行切换的机会(默认必须是基于10进制)。

8请参阅 https://wiki.ubuntu.com/UnitsPolicy。 - nealmcb
5非常愉快。我花了很多时间处理这个问题以及相关的错误。感谢你在这里提供的出色文章! - nealmcb
1与其说“记住,很多时候作者在使用'千字节'这个词时实际上指的是'基字节'”,我会说“请记住,'基字节'这个术语直到1999年才被引入使用,在此之前,'千字节'指的是1024字节。大部分文档、软件和12岁以上的程序员仍然使用原始表达方式。”除此之外,这是一篇非常出色的写作。(日期根据快速查看维基百科得出,可能有些偏差。) - Randy Orrison
@RandyOrrison 这是一个误解。自从上世纪50年代以来,“kilo-”一词在计算机领域中已经被用于两种定义。https://en.wikipedia.org/wiki/Timeline_of_binary_prefixes - endolith
对于好奇的人来说,一个1.44“MB”的软盘实际上有1.47 MB或者1.41 MiB的容量。 - wjandrea
所以 ibinary 的第二个字母。这个解释令人不满意。为什么是第二个字母?为什么不是第一个字母呢?对于千binary 字节、兆binary 字节等,使用 KbB、MbB 等不是更合理吗?我推测这是因为没有单位的 "Kb" 和 "Mb" 可能会被解释为千位和兆位(甚至可能被解释为千字节和兆字节)。 - jamesdlin

MiB代表什么?特别是那个“i”是什么意思?
由于没有人实际回答这个问题:"MiB"代表"进制字节",可以缩写为"兆比特"(虽然这听起来有点愚蠢,我宁愿继续说"兆二进制")。请参阅NIST的解释。 因此,"i"来自单词"binary"(二进制)。
过去还有其他缩写这些单位的提议,但都未能得到广泛应用。
  • κ = 1024,κ2 = 1024²,κ3 = 1024³,...(希腊字母kappa,难以输入)
  • KKB = 1024,MMB = 1024²,GGB = 1024³,...(可能被误解为memegebyte = TB)
  • bK = 1024,bK² = 1024²,bK³ = 1024³,...(当提出时,许多计算机甚至没有小写字母)
  • 1B10 = 1024,1B20 = 1024²,1B30 = 1024³,...
  • k₂B = 1024,M₂B = 1024²,G₂B = 1024³,...


它们是二进制前缀,对应于更常见的十进制前缀。(这是一篇很好的文章,很好地解释了其合理性。)