44

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

Я понимаю, что эти измерения используются по-разному (скорость передачи данных измеряется в битах / с), но я не совсем уверен, смогу ли я определить разницу между Мб, Мб и МиБ.

Вот комментарий, воспроизведенный ниже, взятый из этого ответа (выделено мной).

C64 имеет 65536 байт оперативной памяти. По соглашению, объем памяти указан в kibiBytes, скорость передачи данных в килобитах, а массовое хранение в любой самой производители, думаю, из-сейчас- Bytes. Жесткие диски используют T, G, M и k на этикетке, Windows сообщает размер в Ti, Gi, Mi и ki. И эти 1.44MB дискеты? Это не 1,44 МБ и не 1,44 МБ, а 1,44 Килокибайта. Это 1440 кБ или 1 474 560 байт. - третий

3 ответа3

60
1 KiB (Kibibyte) = 1,024 B (Bytes) (2^10 Bytes)
1 kb  (Kilobit)  =   125 B (Bytes) (10^3 Bits ÷ (8 bits / byte) = 125 B)
1 kB  (Kilobyte) = 1,000 B (Bytes) (10^3 Bytes)

То же самое с любым префиксом SI; k (1x10 3), M (1x10 6), G (1x10 9), так что по расширению:

1 MiB (Mebibyte) = 1,048,576 B (Bytes) (2^20 Bytes)
1 Mb  (Megabit)  =   125,000 B (Bytes) (10^6 Bits ÷ (8 bits / byte) = 125,000 B)
1 MB  (Megabyte) = 1,000,000 B (Bytes) (10^6 Bytes)

Единственными, которые немного отличаются, являются двоичные префиксы МЭК (kibi/mebi/gibi и т.д.), Потому что они находятся в базе 2, а не в базе 10 (например, все числа равны 2 что-то вместо 10 что-то). Я предпочитаю просто использовать префиксы SI, потому что я считаю, что это намного проще. Кроме того, Канада (моя страна) использует метрическую систему, поэтому я привык, например, 1 1kg = 1000g 1k anything = 1000 base things (или 1 кг что-нибудь = 1000 базовых вещей ). Ничто из этого не является неправильным или правильным; просто убедитесь, что вы знаете, какой из них вы используете и что это на самом деле означает.

Чтобы успокоить комментаторов:

1 Byte (B) = 2 nibbles = 8 bits (b)

Вот почему, если вы когда-либо заглядывали в шестнадцатеричный редактор, все делится на два шестнадцатеричных символа; каждый шестнадцатеричный символ размером с полубайта, и есть два байта. Например:

198 (decimal) = C6 (hex) = 11000110 (bits)
9

Есть несколько основных терминов, которые просты и понятны:

* A bit      (b)   is the smallest unit of data comprised of just {0,1}
* 1 nibble   (-)   = 4 bits (cutesy term with limited usage; mostly bitfields)
* 1 byte     (B)   = 8 bits (you could also say 2 nibbles, but that’s rare)

Для преобразования между битами и байтами (с любым префиксом) просто умножьте или разделите на восемь; красиво и просто.

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

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

Десятичная система - это основание-10, к которому привыкли и привыкли большинство людей, потому что у нас 10 пальцев. Двоичная система - это база-2, к которой привыкло большинство компьютеров, и она удобна в использовании, потому что у них два состояния напряжения.

Десятичная система очевидна и проста в использовании для большинства людей (она достаточно проста для умножения в наших головах). Каждый префикс увеличивается на 1000 (причина этого совсем в другом).

Бинарная система гораздо сложнее для большинства некомпьютерных людей, и даже программисты часто не могут умножить произвольно большие числа в своих головах. Тем не менее, это просто быть кратным двум. Каждый префикс увеличивается на 1024. Один «K» равен 1024, потому что это ближайшая степень от двух к десятичному «k», равному 1000 (это может быть верно в данный момент, но разница быстро увеличивается с каждым последующим префиксом).

Числа одинаковы для битов и байтов с одинаковым префиксом.

* Decimal:
* 1 kilobyte (kB)  = 1,000 B  = 1,000^1 B           1,000 B
* 1 megabyte (MB)  = 1,000 KB = 1,000^2 B =     1,000,000 B
* 1 gigabyte (GB)  = 1,000 MB = 1,000^3 B = 1,000,000,000 B

* 1 kilobit  (kb)  = 1,000 b  = 1,000^1 b           1,000 b
* 1 megabit  (Mb)  = 1,000 Kb = 1,000^2 b =     1,000,000 b
* 1 gigabit  (Gb)  = 1,000 Mb = 1,000^3 b = 1,000,000,000 b

* …and so on, just like with normal Metric units meters, liters, etc.
* each successive prefix is the previous one multiplied by 1,000



* Binary:
* 1 kibibyte (KiB) = 1,024 B  = 1,024^1 B           1,024 B
* 1 mebibyte (MiB) = 1,024 KB = 1,024^2 B =     1,048,576 B
* 1 gibibyte (GiB) = 1,024 MB = 1,024^3 B = 1,073,741,824 B

* 1 kibibit  (Kib) = 1,024 b  = 1,024^1 b =         1,024 b
* 1 mebibit  (Mib) = 1,024 Kb = 1,024^2 b =     1,048,576 b
* 1 gibibit  (Gib) = 1,024 Mb = 1,024^3 b = 1,073,741,824 b

* …and so on, using similar prefixes as Metric, but with funny, ebi’s and ibi’s
* each successive prefix is the previous one multiplied by 1,024

Обратите внимание, что разница между десятичной и двоичной системами начинается с малого (при 1 КБ они составляют всего 24 байта или на 2,4% друг от друга), но растут с каждым уровнем (при 1 ГБ они составляют> 70 МБ или с интервалом 6,9%).

Как правило, аппаратные устройства используют десятичные единицы (биты или байты), а программное обеспечение использует двоичные (обычно байты).

Это причина того, что некоторые производители, в частности, mfgs для накопителей, предпочитают использовать десятичные единицы, потому что это приводит к тому, что размер диска звучит больше, но пользователи разочаровываются, когда обнаруживают, что его размер меньше ожидаемого, когда они видят Windows et. и др. сообщить размер в двоичном формате. Например, 500 ГБ = 476 ГБ, поэтому, хотя накопитель рассчитан на 500 ГБ и помечен как таковой, « Мой компьютер» отображает двоичный файл 476 ГБ (но как «476 ГБ»), поэтому пользователи задаются вопросом, куда ушли остальные 23 ГБ. (Производители дисков часто добавляют сноску к пакетам, утверждая, что «форматированный размер меньше», что вводит в заблуждение, поскольку накладные расходы на файловую систему ничто по сравнению с разницей между десятичными и двоичными единицами.)

Сетевые устройства часто используют биты вместо байтов по историческим причинам, и интернет-провайдеры часто предпочитают рекламировать, используя биты, потому что это делает скорость соединений, которые они предлагают, более высокой: 12 Мбит / с вместо 1,5 МБ / с. Они часто даже смешивают и сопоставляют биты и байты, а также десятичные и двоичные числа. Например, вы можете подписаться на то, что провайдер называет линией «12 МБ / с», думая, что вы получаете 12 МБ / с, но на самом деле просто получаете 1,43 МБ / с (12 000 000/8/1024/1024).

-4

Некоторые ответы не точны.

Давайте сначала сделаем несколько заметок:

Приставка "кило" означает 1 000. Приставка "килограмм" к чему-либо означает 1 000 этого предмета. То же самое верно для "мегапикселей" или миллионов, "гига" или миллиардов, "тера" или триллионов и так далее.

Причина, по которой 1 024 существует вместо простого 1 000, заключается в том, как работает двоичная арифметика. Двоичный код, как следует из его названия, является системой с основанием 2 (имеет 2 цифры: 0, 1). Он может выполнять арифметику только с двумя цифрами, в отличие от базовой системы 10, которую мы используем ежедневно (0, 1, 2 ... 9), которая имеет десять цифр.

Чтобы получить число 1 000 (кило) с помощью двоичной арифметики, необходимо выполнить вычисление с плавающей запятой. Это означает, что двоичная цифра должна переноситься при каждой операции до достижения 1 000. В системе base 10 1 000 = 10 3 (вы всегда повышаете 10 до мощности в базе 10), это очень простой и быстрый расчет для компьютера, который можно выполнять без "остатков", но в системе base 2 это невозможно поднять 2 (вы всегда повышаете 2 до степени в базе 2) до любого натурального числа, чтобы получить 1 000. Должна использоваться операция с плавающей запятой или длительное сложение, и для ее выполнения требуется больше времени, чем для целочисленного вычисления 2 10 = 1024.

Возможно, вы заметили, что 2 10 = 1 024 соблазнительно близко к 1 000, а 1 024 к 1 значащему значению - 1 000 (очень хорошее приближение), и обратно, когда скорость процессора была медленной, как у старой собаки, и память была очень ограниченной это было довольно приличное приближение и с ним очень легко работать, не говоря уже о быстром исполнении.

Именно по этой причине термины с префиксами "кило", "мега", "гига" и т.д. Застряли с неточными цифрами (1 024, 2 048, 4 096 и т.д.). Они никогда не предназначались для того, чтобы быть точными числами, они были двоичными приближениями базовых 10 чисел. Они просто возникли как жаргонные слова, которые использовали "технические" люди.

Чтобы еще больше усложнить задачу , JEDEC разработала собственные стандарты для устройств, используемых в полупроводниковых схемах памяти. Давайте сравним некоторые единицы JEDEC с единицами СИ (стандартными международными):

Кб = килобит (JEDEC, 1 024 бита. Обратите внимание на верхний регистр 'K' и нижний регистр 'b')
кБ = килобит (СИ, 1 000 бит. Обратите внимание на нижний регистр 'k' и верхний регистр 'B')

b = бит (JEDEC, обратите внимание на нижний регистр 'b')
б = ??? (SI не определяет слово «бит», поэтому его использование может быть произвольным)

B = байт (JEDEC, 8 бит. Обратите внимание на верхний регистр 'B')
B = ???? (SI не определяет слово "байт", а "B" используется для "Bel" [как в DeciBel])

КБ = килобайт (JEDEC, 1 024 байта. Обратите внимание на верхний регистр 'K' и 'B')
kb = килобайт (SI, 1 000 байт. Обратите внимание на использование строчных букв «k» и строчных букв «B»)

Дело в том, что в разных местах используются разные префиксы с разными определениями. Не существует жесткого и быстрого правила относительно того, какой из них вы должны использовать, но придерживайтесь того, который вы используете.

Из-за понижающего голосования, позвольте мне уточнить, почему вы не можете заработать 1 000 в двоичном виде, увеличив его до любого положительного целого числа.

Бинарная система:

+----------------------------------------------------------------------------------+
| 1 024ths | 512ths | 256ths | 128ths | 64ths | 32nds | 16ths | 8ths | 4s | 2s | 0 |
+-----------------------------------------------------------------------------------

Обратите внимание, что в двоичной системе каждый раз столбцы дублируются. Это в отличие от системы base 10, которая увеличивается на 10 каждый раз:

+--------------------------------------------------------------------------+
| 1 000 000ths | 100 000ths | 10 000ths | 1 000ths | 100ths | 10s | 1s | 0 |
+--------------------------------------------------------------------------+

Первые 10 степеней в двоичном коде (база 2):

2 0 = 1
2 1 = 2
2 2 = 4
2 3 = 8
2 4 = 16
2 5 = 32
2 6 = 64
2 7 = 128
2 8 = 256
2 9 = 512
2 10 = 1 024

Как видите, невозможно поднять двоичное число 2 до любого положительного целого числа, чтобы достичь 1 000.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .