В чем разница между кибибайтом, килобитом и килобайтом?

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

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

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

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

27
задан Community
20.03.2023 2:09 Количество просмотров материала 2913
Распечатать страницу

3 ответа

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 (1x103),M (1x106),G (1x109), так, как следствие:

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)

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

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

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

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

198 (decimal) = C6 (hex) = 11000110 (bits)
58
отвечен squircle 2023-03-21 09:57

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

* 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)

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

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

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

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

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

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

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

* 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

обратите внимание, что разница между десятичной и двоичной системой начинается с малого (в 1K, они всего 24 байта или 2,4% друг от друга), но растет с каждым уровнем (в 1G, они >70MiB, или 6,9% друг от друга).

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

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

сетевые устройства часто используют биты, а не байты по историческим причинам, и провайдеры часто любят рекламировать с помощью биты, потому что это делает скорость соединения они дают звук больше: 12Mibps вместо 1.5 MiBps. Они часто даже смешивать и сопоставлять биты и байты и десятичные и двоичные. Например, вы можете подписаться на то, что интернет-провайдер называет "линия 12 Мбит / с", думая, что вы получаете 12MiBps но на самом деле просто получают 1.43 MiBps (12,000,000/8/1024/1024).

8
отвечен Synetech 2023-03-21 12:14

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

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

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

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

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

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

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

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

Kb = килобит (JEDEC, 1 024 бит. Обратите внимание на верхний регистр 'K' и строчные "б")

КБ = килобит (SI, 1 000 бит. Обратите внимание на нижний регистр 'K' и верхний регистр 'Б')

б = бит (JEDEC, обратите внимание на нижний регистр 'b')

b = ??? (Си не определяет слово "бит", поэтому его использование может быть произвольным)

B = байт (JEDEC, 8 бит. Обратите внимание на верхний регистр 'B')

B = ???? (SI не определяет слово "byte", А "B" используется для " Bel " [как в децибелах])

KB = килобайт (JEDEC, 1 024 байта. Обратите внимание на заглавные буквы 'K' и'B')

КБ = килобайт (SI, 1 000 байт. Обратите внимание на использование нижнего регистра 'k' и нижнего регистра'B')

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

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

двоичная система:

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

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

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

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

20 = 1

21 = 2

22 = 4

23 = 8

24 = 16

25 = 32

26 = 64

27 = 128

28 = 256

29 = 512

210 = 1 024

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

-4
отвечен user3005790 2023-03-21 14:31

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх