为什么`df`使用“Bi”作为字节的缩写?


8

显然df是在每个大小的大写字母后加上“i”。这对于Kilobytes / Kibibytes,Gigabytes / Gibibytes和Mebibytes(如果这就是“Mi”代表的那样)是有意义的。但为什么它会使用“Bi”作为字节?

例如,我的部分结果df -h是:

map auto_home           0Bi    0Bi    0Bi   100%       0          0  100%   /home

1
结果是df -H什么?RTM-的h选项输出是基体2和H选项输出是基座10
FD0

Answers:


9

它是十进制值和二进制前缀之间的差异。 在这种情况下,它说你使用0二进制字节。

有什么不同?

使用“Giga”作为我们的例子,它意味着1000 3的东西(即Gigahertz)。

在计算机中它提出了一个有趣的问题

千兆字节是1000 3字节。但是,一个字节是8(二进制)位。这意味着它在技术上是1024个3字节。为了解释这一点,我们使用不同的表示法:

  • 千兆是十进制(基数10)
  • Gibi是二元的(基数为2)

输出告诉你它正在使用二进制单位。

如果要以“人类可读的十进制表示法”获得输出,请使用大写“H”:

$ df -H
/dev/disk2      1.1T   413G   706G    37% 100935848 172431606   37%   
map auto_home     0B     0B     0B   100%         0         0  100%   /home

最后,它实际上不是Apple惯例,而是来自BSD(它是BSD命令)。您可以在手册页(man df)上找到更多信息。


8
我不明白这是如何回答这个问题的。OP清楚地表明,他们知道之间的区别1GB1GiB。问题是:1Bi和之间有什么区别1B?为什么两个不同的符号
Federico Poloni

5
“千兆字节是1000 ^ 3字节。但是一个字节是8(二进制)位。这意味着它在技术上是1024 ^ 3字节。” - 我不知道一个字节是8位如何导致gigabyte意味着1024 ^ 3而不是1000 ^ 3 ...
marcelm

@marcelm Gigabyte = 1024兆字节。兆字节= 1024千字节。千字节= 1024字节。1024 = 2 ^ 10。
Dmitry Kudriavtsev,

3
@marcelm你是对的,那是不合理的。由于芯片的制造方式,存储器(RAM)一直被测量为2的倍数。旋转磁盘上的空间不一定是因为它取决于物理表面积和位密度,因此磁盘制造商选择使用1000的均匀功率来使其盒子上的数字看起来更好。“Gibi”和类似的前缀是一种追溯性的创作,试图区分它们,但显然它们只会使事情变得更加混乱。
--Brad C'17

1
十进制前缀在前几天用于2 ^ x数字的真正原因是:2 ^ 10~10 ^ 3。
klanomath

5

Bi表示您的单位为1024 0字节,而不是1000 0字节。

即它们是相同的单位,但不会有更大的前缀表示非零指数。看起来df只是迂腐,作为一种在2单位模式下保持一致的方式。

这是一个假定的惯例:没有度量或IEC“Bi”单元,只有2个字母的IEC前缀以“i”结尾,用于比特或字节的数量。(例如Mi为mebibytes或mebibits。)不,你不应该用直言不讳地大声说出来。

“iB”可能更有意义(没有前缀的二进制字节),但它也不是。


2
那不应该是“iB”吗?;)

1024 ^ 0正好等于1000 ^ 0(= 1)所以它不解释它。没有用于指示二进制字节的术语/符号(因为字节本身意味着二进制)所以我​​使用giga作为示例。指示0更加困难,因为二进制中的0和十进制中的0相等并且可能令人困惑。
Allan

@Cai:我查了一下,IEC前缀总是包含带前缀的“i”,并没有提到“iB”基本单元。查看更新的答案。但是,是的,同意这将更加一致。当然,在这种情况下(FreeBSD / OS X df输出),这就是它的含义。
Peter Cordes于

1
也许iB是虚构的字节?
Federico Poloni
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.