Яке походження K = 1024? [зачинено]


73

Чому існує розбіжність у кількості байтів у кілобайте? У деяких місцях я бачив число 1024 (2 10 ), а в інших - 1000 (а різниця стає все більшою з M, G, T тощо).

Це не дискусія про те, чи має бути 1024 чи 1000 (хоча ви можете обговорити це у коментарях), а про те, де / коли ця ситуація виникла та / або набула широкого поширення.

Наскільки мені відомо, виробники Linux та обладнання ніколи не використовують варіант 1024. Це, і з чуток, змушує мене думати, що MS-DOS зробив цю версію загальною, але які факти?


23
Одне представлення є двійковим (2 ^ 10, або 1024), а інше - у десятковій (10 ^ 3 або 1000) ...
Трезоїд

13
Якщо ви шукаєте винних конкретних людей, зверніться до виробників жорстких дисків. Це робить їх пристрої схожими на те, що вони мають більшу ємність, коли це виражається в десяткових МБ, ГБ тощо. Я вважаю, що це завжди робилося, але я вважаю, що донедавна розрив між десятковою та двійковою мовами зростав досить широким. мати значення.
ЛоуренсC

23
@ultrasawblade: Ви хочете звинуватити виробників жорстких дисків у тому, що вони є однією з груп, які gigabyteправильно використовують цей термін ?
парадороїд

13
Мені просто завжди здавалося зрозумілою річчю, що 1K = 1024 з будь-яким комп'ютером, пов’язаним до 20 Гб або близько того, накопичувачі стали звичайною справою. Це також приблизно збігається з часом, коли багато нетехнічних людей почали регулярно користуватися ПК. Велика кількість комп'ютерної літератури (технічної та нетехнічної) з початку 90-х років і раніше не згадує нічого про "десяткових" КБ або "кібібайт".
ЛоуренсC

13
@paradroid: спочатку гігабайт означав 1024 мб (а mb = 1024 kb тощо). Це було відновлено до значення 1000, оскільки виробники жорстких дисків наполягали на неправильному використанні. Справді, це залежить від того, що ви вважаєте "правильним", оскільки кілограм означає 1000, але в межах інформатики кілобайт завжди був 1024 з технічних причин, поки його не змінили в 1999 році.
Джеймс,

Відповіді:


63

Він триває досить довго, і тут детально описано . Схоже, ви можете звинуватити IBM, якщо хтось.

Подумавши про це ще трохи, я б звинувачував американців в цілому за їх кричуще зневага до міжнародних d'unités Système : P


31
Це завжди легко звинуватити американців.
Notinlist

13
@Notinlist: Це жарт.
парадороїд

5
Мені це нагадує епічну сцену фільму "Целюлозна фантастика" ... Таку, що має запитання про "метричну систему". :-)
П'єр Уалет

7
@Notinlist Легко завжди звинувачувати американців. Ось чому ми так робимо. Те і те, що його весело.
Одномісний

3
Запис 1961 року там цікавий тим, що в ньому згадується "65 к" - це перший порядок, який може виявити чітку різницю між "k = 1024" і "k = 1000, округлий", він чітко зводиться до останнього. У 1964 році, з іншого боку, всі використовують бінарні значення.
Випадково832

26

На початку всі обчислення були низькорівневими. А на низькому рівні програмування число "1000" є абсолютно марним, і їм потрібні префікси для більшої кількості, щоб вони повторно використовували СІ. Всі це знали на місцях, плутанини не було. Він добре прослужив 30 років чи хто знає.

Це не тому, що вони були американцями, тому їм потрібно було зруйнувати СІ за будь-яку ціну. :-)

Немає програміста, якого я знаю, і каже кібібайт. Вони кажуть кілобайт і мають на увазі 1024 байти. Алгоритми сповнені повноважень 2. Навіть сьогодні "1000" - це дійсно марне число між програмістами.

Казати кібі та мібі просто надто смішно і привертає увагу до теми. Ми із задоволенням передаємо це сектору телекомунікаційних та дискових накопичувачів :-). І я напишу кібібайти на інтерфейси користувачів, де непрограмісти можуть їх читати.


3
Ще смішніше сказати, коли говорити про біти - «мібібіт»
Джеймс

3
Я думаю, що KiB тощо повинен бути вимовлений кілобінабайтом тощо, а не кібібайт.
Лежи Райан

2
@Lie Ryan, використовуючи префікси на кшталт "kilobinarybyte", це пропозиція, яка в кінцевому рахунку не вдалася і мала різні абревіатури, ніж кибібайт. Див en.wikipedia.org/wiki/Binary_prefix
Бен Лі

3
тож було б справедливо вимовляти км як кілодецимальнихметрів?
JustJeff

3
Число 1000 не "абсолютно марно". "k = 1000" використовується в обчислювальній техніці з 1950-х років. Перші комп'ютери насправді були десятковими машинами, а не двійковими. Швидкість роботи мережі завжди вимірювалася кратними 1000. "Вона добре служила 30 років"? Дійсно? Програмісти скаржаться на "k = 1024" протягом принаймні 43 років. en.wikipedia.org/wiki/Timeline_of_binary_prefixes
endolith

8

Це правильно і має сенс технічні люди використовувати 1024 = 1К у багатьох випадках.

Для кінцевих користувачів, як правило, краще сказати 1000 = 1k, оскільки всі звикли до 10-бальної системи числення.

Проблема полягає в тому, де провести лінію. Іноді люди, які займаються маркетингом або рекламою, насправді не досягають успіху в «перекладі» або в адаптації технічних даних та мови до кінцевих користувачів.


13
Технічні люди повинні знати, що 1024 байти - це справді кібібайт (KiB), але знати, що цей невідомий персонал не відомий.
парадороїд

8
Хто каже, що це правильно? Кіло означав 1000 протягом століть, тому ІМО вони ніколи не повинні були використовувати його протягом 1024 року.
Барт ван Хекелом

20
Байт не є одиницею СІ; KB означає "кілобель" (надається, одиниця, яку ви ніколи не хочете використовувати, якщо ви не описували звук, якщо такий є,
виданий

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

5
Варіанти kiB і т. Д. Є досить новими. Я не думаю, що вони використовувались, коли ця проблема виникла, безумовно - я мав враження, що вони були зроблені саме для її вирішення!
Shinrai

3

Звинувачуйте виробників напівпровідників (вони надають нам лише двійкове обладнання) [1]

А ще краще: звинувачуйте в самій логіці (двійкова логіка - це лише найелементарніша логіка).

Ще краще: кого ми звинуватимо в жалюгідній десятковій системі ?

Він має набагато більше вад, ніж двійкова система. Він був заснований на кашлі на середній кількості пальців у людського виду кашлю

Оооо ...

[1] Я хочу свій квантовий трикубітний комп'ютер !!! Зараз!


29
Я думаю, ви знайдете середню кількість пальців менше 10 </pedant>
Rory Alsop

1
@Rory: ^ це був гарний сміх
Мехрдад

2
@Rory: "менше" </pedant>. Або це? Почекайте хвилинку, я aargh ...
Позашляхи

1

1024 не варто звинувачувати, це справді дуже гарна річ, оскільки це є причиною, що комп'ютер (цифровий) може бути таким же швидким і таким же ефективним, як і сьогодні. Оскільки комп'ютер використовує лише 2 значення (0,1), це виводить з рівняння труднощі та складність (неточність) анологічної системи.

Було б складніше, якби ми сказали, що кілобайт - 1000 біт, тому що 2, яка потужність - 1000? тож навіть 1 кілобайт був би неточним, оскільки він матиме плаваючі точки або наближення.

Але я багато в чому звинувачую маркетинг у продажі 8 гігабайт * і додаванні цього дрібним шрифтом

* 1 gigabyte is 1,000,000,000 bytes. 

На жаль, це те саме, що швидкість підключення, ваш Інтернет-провайдер скаже 1,5 Мбіт / с, а не ~ 150 кілобайт. це просто дуже оманливо


3
Якщо говорити про те, наскільки великий файл 15682 біт або як швидко такий файл можна передавати по мережі, повноваження 2 не грають ніякої ролі. І саме в цьому контексті найбільше плутанини.
Барт ван Хекелом

2
Зрештою, файл зберігається на сторінках пам'яті, які вирівнюються до бінарних меж потужності. Під час надсилання через TCP розмір вікна, в якому надсилаються пакети, є кратними потужностями двох. Коли файл зберігається на жорсткому диску, він зберігається у двох блоках потужностей. Я розумію, що ви говорите, але кілобайт = 1024 (або принаймні кратні потужності двох) вбудований у обчисленні занадто багато.
FryGuy

1
Чесно кажучи, мережа завжди використовувала біти як основу.
Synetech

1
Перша дискета 5,25 "вміщала 109 375 байт і її рекламували як" 109,4 Кбайт ". Я думаю, що вони це зробили і з злих маркетингових причин? Ви вважаєте, що було б логічніше записати це як" 106,8 КБ "? І магнітоли та процесор швидкість і швидкість модему всі вимірюються десятками, щоб обдурити нас? Будь ласка
endolith

1
@Ibu: різниця між 1 000 000 000 байтів і 1 Гб дорівнює 0. Дійсно, чому виробники дискети зловмисно надувають їх кількість, коли різниця настільки мала? Вони ні. Вони використовували 1000, тому що це логічно, очевидно і правильно, а не тому, що вони є частиною змови для обману клієнтів. Виробники жорстких дисків вимірювали в 1000-х з MB років теж з тієї ж причини.
ендоліт

0

Якщо ви вважаєте, що числа на комп’ютерах є двійковими, а 2 ^ 10 - 1024, це має ідеальний сенс. Набагато простіше працювати з 1024, а не 1000, тому що ти можеш легко розділити на 1024, використовуючи лише цілу математику та зсув бітів . Поділ на 1000 - це набагато дорожча операція, яка може потребувати математики з плаваючою комою.

Напр

bytes = 1 073 741 824
kilobytes = bytes >> 10 = 1 048 576
megabytes = kilobytes >> 10 = 1024
gigabytes = megabytes >> 10 = 1

Ви серйозно вважаєте, що час обчислення є релевантним? Чому комп'ютери не обробляють "км" як "1024 м", тоді, якщо це важко конвертувати?
ендоліт

@endolith Так, я думаю, що хоча б історично. Хоча це може бути незначним сьогодні, в перші дні, коли кожен цикл процесора переважав, швидкий і простий розрахунок, який дав гідну відповідь, був би кращим для чогось подібного. Особливо, якщо люди умовно знали, що 1 КБ означає 1024 байти.
Jo-Herman Haugholt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.