Каково происхождение К = 1024? [закрыто]

73

Почему существует расхождение в количестве байтов в килобайтах? В некоторых местах я видел число 1024 (2 10 ), в то время как в других это 1000 (и с M, G, T и т. Д. Разница становится все больше).

Это не обсуждение того, должно ли это быть 1024 или 1000 (хотя вы можете обсудить это в комментариях), а о том, где / когда эта ситуация возникла и / или стала широко распространенной.

Насколько я знаю, производители Linux и оборудования никогда не используют вариант 1024. Это, и понаслышке, заставляет меня думать, что MS-DOS сделала эту версию распространенной, но каковы факты?

Барт ван Хейкелом
источник
23
Одно представление в двоичном виде (2 ^ 10 или 1024), а другое в десятичном (10 ^ 3 или 1000) ...
Трезоид
13
Если вы ищете конкретных людей, чтобы обвинить, укажите на производителей жестких дисков. Это заставляет их устройства выглядеть так, как будто они имеют большую емкость, когда это выражается в десятичных МБ, ГБ и т. Д. Я считаю, что они всегда делали это, но лишь недавно сравнительно недавно разрыв между десятичным и двоичным кодами стал достаточно большим. иметь большое значение.
LawrenceC
23
@ultrasawblade: Вы хотите обвинить производителей жестких дисков в том, что они являются единственной группой, которая gigabyteправильно использует этот термин ?
paradroid
13
Просто мне всегда казалось понятным, что 1K = 1024 со всем, что связано с компьютером до 20 ГБ или около того дисков, стало обычным делом. Это также примерно совпадает со временем, когда многие нетехнические люди начали использовать ПК на регулярной основе. Огромное количество компьютерной литературы (технической и нетехнической) с начала 90-х и ранее ничего не упоминало о «десятичных» КБ или «кибибайтах».
LawrenceC
13
@paradroid: гигабайт изначально означал 1024 МБ (и МБ = 1024 КБ и т. д.). Значение было пересчитано на 1000, потому что производители жестких дисков настаивали на его неправильном использовании. По общему признанию, это зависит от того, что вы считаете «правильным», поскольку килограмм означает 1000, но в компьютерной науке килобайт всегда был 1024 по техническим причинам, пока его не изменили в 1999 году.
Джеймс

Ответы:

63

Это восходит довольно давно, и подробно здесь . Похоже, вы можете обвинить IBM, если кто-нибудь.

Подумав об этом еще немного, я бы осудил американцев в целом за их вопиющее пренебрежение к Международной системе образования : P

Paradroid
источник
31
Всегда легко обвинять американцев.
Notinlist
13
@Notinlist: это шутка.
paradroid
5
Это напоминает мне эпическую сцену из фильма «Криминальное чтиво» ... С вопросом о «метрической системе». :-)
Пьер Ватле,
7
@ Notinlist Легко всегда обвинять американцев. Вот почему мы так много делаем. Это и тот факт, что это весело.
Singletoned
3
Интересная запись 1961 года, в которой упоминается «65k» - будучи первым порядком величины, который может показать четкую разницу между «k = 1024» и «k = 1000, округлено», для последнего она явно опускается. В 1964 году, с другой стороны, все используют двоичные значения.
Random832
26

Все вычисления были низкоуровневыми в начале. А при низкоуровневом программировании число «1000» совершенно бесполезно, и им нужны префиксы для больших количеств, поэтому они повторно использовали SI. Все знали это на поле, не было путаницы. Хорошо прослужил 30 лет или кто знает.

Это не потому, что они были американцами, поэтому им нужно было сломать СИ любой ценой. :-)

Там нет программиста, которого я знаю, и говорит kibibyte. Они говорят килобайт и имеют в виду 1024 байта. Алгоритмы полны степеней 2. Даже сегодня «1000» является действительно бесполезным числом между программистами.

Говорить о киби и миби просто смешно и привлекает внимание субъекта. Мы с радостью отдадим его телекоммуникационному и дисковому секторам :-). И я напишу kibibytes на пользовательских интерфейсах, где непрограммисты могут читать это.

Notinlist
источник
3
Еще смешнее говорить о битах - «мибибит»
Джеймс
3
Я думаю, что KiB и т. Д. Должны быть объявлены килобинарными байтами и т. Д., А не кибибайтами.
Ли Райан
2
@Lie Ryan, использование префиксов типа «kilobinarybyte» было предложением, которое в конечном итоге провалилось и имело другие сокращения, чем kibibyte. См. 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
эндолит
8

Это правильно и имеет смысл для технических людей использовать 1024 = 1K во многих случаях.

Для конечных пользователей обычно лучше сказать 1000 = 1k, потому что все привыкли к системе счисления, основанной на 10.

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

мит
источник
13
Технический персонал должен знать, что 1024 байта - это действительно Кибибайт (КиБ), но знать, что этот термин не известен нетехническим специалистам.
paradroid
8
Кто сказал, что это правильно? Кило означало 1000 на протяжении веков, поэтому ИМО им не следовало использовать его на 1024 год.
Барт ван Хейкелом
20
Байт не является единицей СИ; KB означает «килобел» (предоставляется, единица, которую вы бы никогда не захотели использовать, если бы вы не описывали звук, если таковой имеется, произведенный Большим взрывом.)
Wooble
10
@njd: C64 имеет 65536 байт оперативной памяти. По соглашению, объем памяти указывается в килобайтах, скорости передачи данных в килобитах, а объем памяти - в байтах, которые производители думают. Жесткие диски используют T, G, M и k на этикетке, Windows сообщает размер в Ti, Gi, Mi и ki. И эти 1.44MB дискеты? Это не 1,44 МБ и не 1,44 МБ, а 1,44 Килокибайта. Это 1440 кБ или 1 474 560 байт.
Третье
5
Варианты kiB и т. Д. Довольно новые. Я не думаю, что они использовались, когда возникла эта проблема, конечно - у меня сложилось впечатление, что они были созданы именно для ее решения!
Shinrai
3

Виноваты производители полупроводников (они предоставляют нам только двоичное оборудование) [1]

А еще лучше: винить саму логику (бинарная логика - только самая элементарная логика).

Еще лучше: кого мы будем обвинять в убогой десятичной системе ?

У него гораздо больше недостатков, чем у бинарной системы. Это был кашель, основанный на среднем количестве пальцев при кашле человека.

Оооо ...

[1] Я хочу свой квантовый компьютер с тремя кубитами !!! В настоящее время!

sehe
источник
29
Я думаю, вы обнаружите, что среднее число пальцев составляет менее 10 </ pedant>
Рори Олсоп
1
@Rory: ^ это был хороший смех
Mehrdad
2
@Rory: «меньше» </ pedant>. Либо это? Подожди минутку, аааа ...
аутбласты
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 КБ»? И ленточные накопители и процессор Скорости и скорости модема все измеряются в десятичных числах, чтобы нас обмануть? Пожалуйста.
Эндолит
1
@Ibu: разница между 1 000 000 000 байтов и 1 ГБ равна 0. Действительно, почему производители дискет злонамеренно раздувают свои числа, когда разница настолько мала? Они не будут. Они использовали тысячи, потому что это логично, очевидно и правильно, а не потому, что они являются частью заговора с целью обмана клиентов. Производители жестких дисков измеряют тысячелетия со времен 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 байта.
Джо-Герман Хогольт