Чим відрізняється кібібайт, кілобіт від кілобайт?


45

Це питання змусило мене замислитися про відмінності між цими трьома способами вимірювання розміру: кібібайт , кілобіт та звичайний кілобайт .

Я розумію, що ці вимірювання мають різні види використання (швидкість передачі даних вимірюється в бітах / сек), але я не зовсім впевнений, чи можу я визначити різницю між Мб та МБ та МіБ.

Ось коментар, відтворений нижче, узятий з цієї відповіді ( акцент мій ).

C64 має 65536 байт оперативної пам’яті. За угодою, обсяг пам'яті вказаний в kibiBytes , швидкість передачі даних в кілобітах і пристрої, що запам'ятовують в будь-якому-то-виробниках, думають, через сейчас- Bytes . Harddrives використовують T, G, M і k на етикетці, Windows повідомляє розмір у Ti , Gi , Mi та ki . А ті дискети 1,44MB? Вони не є ні 1,44 Мб, ні 1,44 Мбіт, вони 1,44 кілокібібайта. Це 1440kiB або 1'474'560 байт. - Третє


12
Роки будуть плутаниною на довгі роки. У перші дні обчислень люди помітили, що працювати з факторами 1024, а не 1000 для комп'ютерів, було набагато простіше. Тому протягом десятиліть стандартний префікс SI "кіло" використовувався (і все ще дуже часто використовується) для нестандартного 1024, і він став фактично стандартом у обчислювальних технологіях. За винятком того, що деякі люди все одно користувалися SI 1000. Щоб розібратися з безладом, "кібі" зараз офіційно визначається як 1024 фактор - але це стало занадто пізно для легкого переходу. "кіло" ще буде регулярно використовуватися / зловживатися протягом 1024 факторів протягом певного часу.
Steve314

Це могло б допомогти прийняттю, якби вони не обрали префікси, які звучать нерозумно; навіть абревіатура вимагає, щоб хтось "подумки прагнув" цього слова. Я просто ніколи не буду використовувати "кібібайт" тощо
tgm1024

Відповіді:


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

Єдині, що дещо відрізняються - це бінарні префікси 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)

5
+1 Згадка про наявність у байті 8 біт може бути корисною.
парадороїд

4
... і не забувайте, що nybble - це чотири біти (або півбайта)!
Linker3000

4
Можна також знати, що малі знаки "b" іноді неправильно використовуються для скорочення "байтів". Я бачу, що багато місць просто використовують "біт" в абревіатурі, наприклад, у МБ для мегабайт і Мбіт для мегабіту і взагалі тримаються подалі від "b".
Джеймс

4
Префікс
кіл

1
@ Redandwhite Nope, вони використовують базу 10 для вимірювання свого сховища, але наші комп’ютери використовують базу 2. Це пояснює невідповідність між тим, що друкується на коробці, і тим, що відображається на комп'ютері. Наприклад, 500GB (box) = 465.7GiB (computer)що , як вони вас).
білка

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" дорівнює 1,024, оскільки це найближча потужність від двох до десяткової "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% один від одного), але зростає з кожним рівнем (в 1G вони> 70MiB або 6,9% один від одного).

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

Це є причиною того, що деякі виробники, зокрема диски mfgs, люблять використовувати десяткові одиниці, оскільки це робить звук розміру диска більшим, проте користувачі засмучуються, коли виявляють, що його менше, ніж очікували, коли бачать Windows et al. ін. повідомляти про розмір у двійковій формі. Наприклад, 500 ГБ = 476 Гбіт, тож при цьому накопичувач містить 500 ГБ і позначений як такий, Мій комп'ютер відображає двійкові 476 Гбіт (але як "476 ГБ"), тож користувачі задаються питанням, куди пішли інші 23 ГБ. (Виробники дисків часто додають виноску до пакетів, вказуючи, що "розмір формату менше", що вводить в оману, оскільки накладні витрати файлової системи - це ніщо в порівнянні з різницею між десятковими і двійковими одиницями.)

Мережеві пристрої часто використовують біти замість байтів з історичних причин, а Інтернет-провайдери часто люблять рекламувати за допомогою бітів, оскільки це робить швидкість з'єднань, які вони пропонують, звучанням більше: 12 Мбіт / с, а не лише 1,5 Мбіт / с. Вони часто навіть змішують і співставляють біти і байти, десятковий і двійковий. Наприклад, ви можете підписатися на те, що провайдер називає лінію "12 Мбіт / с", думаючи, що отримуєте 12 Мбіт / с, але насправді отримуєте 1,43 Мбіт / с (12 000 000/8/1024/1024).


2
@endolith, неправда. Перш за все, справді або, принаймні, були в минулому деякі виробники приводів, які використовують бінарні одиниці. По-друге, ви пропустили пункт. Якщо вони захотіли, вони могли б поставити 73 400 312 на накопичувач, що дійсно було б 70M (i) B замість 66. Вони використовують 70 000 000, тому що дешевше це використовувати, і все ще називають це "70MB". Це прості ріжучі куточки, і багато виробників це роблять. Подивіться на їжу; замість 500G вони поставлять 454G, оскільки це дорівнює 1LB. Гірше, що замість 454G вони поставлять 450G і звинуватитимуть пропавши 4G у округленні. Це не змова, це зниження витрат.
Synetech

1
Наведіть кілька прикладів виробників жорстких дисків, що використовують двійкові одиниці.
ендоліт

1
@endolith, це не сайт історії. Можливо, коли я роблю весняну чистку і викопую старі диски, я опублікую фотографію чи щось таке. В іншому випадку ви можете зайти до музею історії комп'ютерів чи до комп'ютерного магазину для мам і попсів і знайти кілька старих жорстких дисків, якщо це для вас важливо. У наші дні більшість mfgs цілеспрямовано використовують мітки, які роблять речі звучаннями більші. Як я вже говорив, вони могли зробити це 73 400 320 байтів, щоб зробити накопичувач 70 МБ, якщо вони хотіли, але навіщо турбуватися, коли вони можуть дешево виграти і поки технічно називають це 70 МБ? Знову ж таки, це не змова, це звичайна маркетингова оманливість.
Synetech

2
Я вже переглянув архіви бітсейверів, і всі приклади, які я знаходжу, є десятковими. Цей міф про те, що виробники приводів в якийсь момент перейшли з двійкового на десятковий, щоб обдурити клієнтів, є гайкою. Вони писали не відділи маркетингу, а інженери, що використовують стандартні підрозділи, якими користуються інженери. Логічно і розумно називати 70 000 000 байт накопичувача IBM 3340 "70 МБ". Ось що завжди означало "мега-", і це те, що очікували б користувачі. Називати його "66 Мб" в деяких місцях і "68 359 КБ" в інших місцях, як це робить Microsoft Windows, божевільно.
ендоліт

1
@endolith, ніхто не сказав, що вони перейшли на десяткові, щоб обманювати, тільки що вони спеціально продають їх таким чином, хоча вони знають про плутанину і можуть зробити накопичувач 73,400,320 байтів, а не лише 70 000 000, що не є круглим числом у комп’ютерах. Що стосується вашої заяви про це "завжди", маючи на увазі, що тут вже є нитка про те, коли ввійшли в експлуатацію бінарні одиниці, і це було давно, звичайно, перш ніж комп'ютери стали споживчими продуктами.
Synetech

-4

Деякі відповіді не точні.

Спочатку зробимо кілька приміток:

Приставка "кіло" означає 1 000. Приставка "кіло" до чого-небудь означає 1 000 цього елемента. Те саме стосується "мега" або мільйона, "гіга" або мільярда, "тера" або трильйона тощо.

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

Для того щоб дістатися до числа 1 000 ( кілограм ) за допомогою двійкової арифметики, необхідно провести обчислення з плаваючою комою. Це означає, що двійкову цифру потрібно проводити кожну операцію, поки не буде досягнуто 1000. У базовій системі 10, 1 000 = 10 3 (ви завжди піднімаєте 10 до потужності в базі 10), дуже простий і швидкий розрахунок для комп'ютера, який може виконуватись без «залишків», але в системі базової 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 з одиницями SI (стандартні міжнародні):

Kb = Кілобіт (JEDEC, 1 024 біт. Зверніть увагу на верхній регістр 'K' і нижній регістр 'b')
kB = kiloBit (SI, 1 000 біт. Зверніть увагу на нижній регістр 'k' та верхній регістр 'B')

b = біт (JEDEC, зверніть увагу на малі регістри 'b')
b = ??? (SI не визначає слово "біт", тому його використання може бути довільним)

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

KB = кілобайт (JEDEC, 1 024 байт. Зверніть увагу на верхній регістр "K" і "B")
kb = кілобайт (СІ, 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):

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.


3
Я вважаю, що ви неправі, заявивши, що для числа 1000 потрібна арифметика з плаваючою комою. Ви можете представити будь-яке натуральне число, використовуючи будь-яку систему нумерації. Власне, двійковий еквівалент 1000 становить 1111101000 .
Докторо Рейхард

Докторо, будь ласка, пам’ятайте, що ми працюємо у двійковій системі або базі 2, тож ви насправді неправі. Ось перші 10 потужностей 2 у двійковій (основа 2): 2 ^ 0 = 1. 2 ^ 1 = 2. 2 ^ 3 = 4. 2 ^ 4 = 8. 2 ^ 5 = 16. 2 ^ 6 = 64 . 2 ^ 7 = 128. 2 ^ 8 = 256. 2 ^ 9 = 512. 2 ^ 10 = 1024. Зауважте, що відповідь є експоненціальною, вона подвоюється кожного разу, коли ви збільшуєте показник на 1. Отже, бачите, це не так можна підняти двійковий 2 (БІНАРИНА 2 ... не основна десятка 2) на будь-яке додатне ціле число, яке складе 1 000. Я все одно оцінюю голос, що перемогло.
user3005790

Це не пояснює, що різниться між бітом і байтом. Насправді існує "жорстке швидке правило" 1 Кб - це одна тисяча біт, 1 КБ - це тисяча байтів. Є величезна різниця. 8 Кб - 1 Кб.
Рамхаунд

3
Хоча це твердження правильне, вам все одно не потрібно виконувати арифметику з плаваючою точкою. Ви розумієте сили 2, тому ви також можете зрозуміти, що 1111101000 = 2 ^ 9 + 2 ^ 8 + 2 ^ 7 + 2 ^ 6 + 2 ^ 5 + 2 ^ 3 = 1000.
Докторо Рейхард

1
Я не вірю, що «Ніколи не мали бути точними числами, вони були двійковими наближеннями базових чисел 10» - це правда; Я думаю, що це лише результат апаратного забезпечення, яке було (обмежено) збереженням нулів та нульової адреси, а також апаратним адресаванням за допомогою двійкових регістрів. Обидва є базою 2; я взагалі не пов'язаний з наближенням базових 10 обчислень. Крім того, я не бачу сенсу, який ви робите щодо розрахунків. Це не так, як комп'ютерний вихід показав би 1024, де він насправді мав показати 1000, або 1000, коли внутрішньо було б 1024. Які обчислення ви маєте на увазі?
Ар’ян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.