Почему `df` использует« Bi »как сокращение для байтов?

8

Видимо dfставит «я» после заглавных букв для каждого размера. Это имеет смысл для килобайт / кибибайт, гигабайт / гибибайт и мебибайт (если это то, что означает «Mi»). Но почему бы использовать «Би» для байтов?

Например, часть моего результата df -h:

map auto_home           0Bi    0Bi    0Bi   100%       0          0  100%   /home
Kiochi
источник
1
Каковы результаты df -H? RTM- hвыходной параметр является базовым 2 и Hвыходной параметр базовой 10.
fd0

Ответы:

9

Это разница между десятичным значением и двоичным префиксом . В этом случае говорится, что вы используете 0 двоичных байтов.

Какая разница?

Используя «Giga» в качестве нашего примера, это означает 1000 3 чего-то (то есть гигагерц).

В компьютерах это создает интересную проблему:

Гигабайт равен 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
Я не понимаю, как это отвечает на вопрос. ОП дает понять, что они знают разницу между 1GBи 1GiB. Вопрос: в чем разница между 1Biи 1B? Почему два разных символа?
Федерико Полони
5
«Гигабайт составляет 1000 ^ 3 байта. Однако байт составляет 8 (двоичных) битов. Это означает, что технически это 1024 ^ 3 байта». - Я не вижу, как 8-битный байт приводит к гигабайту, означающему 1024 ^ 3 вместо 1000 ^ 3 ...
marcelm
@marcelm Gigabyte = 1024 мегабайта. Мегабайт = 1024 килобайта. Килобайт = 1024 байта. 1024 = 2 ^ 10.
Дмитрий Кудрявцев
3
@marcelm Вы правы, это не секвестр. Память (RAM) всегда измерялась как кратность степеней 2, в зависимости от того, как производятся микросхемы. Место на вращающихся дисках не обязательно, так как оно зависит от физической площади поверхности и битовой плотности, поэтому производители дисков решили использовать даже степени 1000, чтобы числа на их коробке выглядели лучше. «Gibi» и подобные префиксы были задним числом, чтобы попытаться различить их, но, очевидно, они только усложняют ситуацию.
BradC
1
Реальная причина, по которой десятичный префикс использовался для 2 ^ x чисел в более ранние дни: 2 ^ 10 ~ 10 ^ 3.
klanomath
5

Би означает, что вы находитесь в единицах 1024 0 байтов вместо 1000 0 байтов.

то есть это одна и та же единица, но не с большими префиксами, которые означают ненулевые показатели. Похоже, dfэто просто педантично, как способ быть последовательным, когда в режиме единиц мощности 2.

Это условное соглашение: не существует метрики или единицы «Bi» МЭК, только двухбуквенные префиксы МЭК , оканчивающиеся на «i», для использования с количеством битов или байтов. (например, Mi для mebibytes или mebibits.) И нет, вы не должны когда-либо говорить это без иронии вслух с прямым лицом.

«iB» может иметь больше смысла (двоичные байты без префикса), но это тоже не вещь.

Питер Кордес
источник
2
Тогда не должно ли это быть "iB"? ;)
Цай
1024 ^ 0 точно равно 1000 ^ 0 (= 1), поэтому это не объясняет. Там нет термина / символа для обозначения двоичного байта (потому что байт по сути подразумевает двоичный), поэтому я использовал гига в качестве примера. Еще сложнее указать 0, потому что 0 в двоичном и 0 в десятичном виде равны и могут привести к путанице.
Аллан
@Cai: я проверил, префиксы IEC всегда включают «i» с префиксом и не упоминают базовый блок «iB». Смотрите обновленный ответ. Но да, согласился, что будет более последовательным. Конечно, в этом контексте ( dfвывод FreeBSD / OS X ) это то, что он означает.
Питер Кордес
1
Может быть, iB - это мнимые байты?
Федерико Полони