Преобразование байтов в мегабайты

104

Я видел три способа преобразования байтов в мегабайты:

  1. мегабайты = байты / 1000000
  2. мегабайты = байты / 1024/1024
  3. мегабайты = байты / 1024/1000

Хорошо, я думаю, что №3 совершенно неправильный, но я это видел. Я думаю, что №2 правильный, но я ищу авторитетные источники (например, W3C, ISO, NIST и т.д.), чтобы уточнить, какой мегабайт является настоящим мегабайтом. Может ли кто-нибудь процитировать источник, который подробно объясняет, как выполняется этот расчет?

Бонусный вопрос: если №2 - мегабайт, как называются №1 и №3?

Кстати: производители жестких дисков не считают это авторитетом!

Пользователь1
источник
3
Производители жестких дисков действительно считаются авторитетами в этом вопросе, поскольку их использование мегабайта для обозначения смысла №1 способствует принятию этого преобразования. Обратите внимание, что операционные системы Microsoft по-прежнему используют смысл №2.
Майкл Петротта 02
3
# 3 следует называть дискетой мегабайта. 3½-дюймовые дискеты были весьма примечательны тем, что использовали это (и я не припомню, чтобы видел это где-либо еще).
Майкл Мэдсен
16
И обязательно: xkcd.com/394
Сева Алексеев
4
Блин, блин. Между этим и кодированием текста я иногда отчаиваюсь из-за нашей безошибочной способности добавлять сложные изгибы к самым основным вещам.
Пол Д. Уэйт
4
Производители жестких дисков, скорее всего, используют номер 1 для получения наибольшего числа. Для GB разница составляет 7%, а для TB разница составляет 10%.
Питер Мортенсен,

Ответы:

116

Традиционно под мегабайтом мы подразумеваем второй вариант - 1 мегабайт = 2 20 байтов. Но на самом деле это неправильно, потому что мега означает 1 000 000. Есть новое стандартное имя для 2 20 байт, это мебибайт ( http://en.wikipedia.org/wiki/Mebibyte ), и оно набирает популярность.

Андрей
источник
10
Я согласен со всем этим, за исключением того, что он набирает большую популярность. Мнение 1024 = K и друзья эффективно неуязвимо. Когда вы заставите людей говорить «взломщик» вместо «хакер», вернитесь ко мне.
TED
5
Не собираюсь голосовать против упоминания еретического "мебибайта", но это требует больших усилий.
aehiilrs 02
3
@TED: на самом деле использование слова «хакер» в значении «взломщик» является прекрасным примером того, как популярная культура отвергает использование, которое предпочли бы гики.
Майкл Петротта 02
2
Я лично считал, что мебибайт набирает популярность, может я ошибаюсь. Я видел на некоторых довольно популярных сайтах загрузки размер, показанный в MiB и KiB.
Андрей
1
Что ж, я согласен с вами, и я также использую 10-базовые мега и 2-базовые киби и меби. Это стандарт IEC для использования в метрической системе: это окончательный вариант, и нет смысла отказываться от него.
Zan Lynx,
28

Существует стандарт IEC, который различает термины, например Мебибайт = 1024 ^ 2 байта, но Мегабайт = 1000 ^ 2 (для совместимости с единицами СИ, такими как килограммы, где k / M / ... означает 1000/1000000). На самом деле большинство людей в области ИТ предпочтут мегабайт = 1024 ^ 2, а производители жестких дисков предпочтут мегабайт = 1000 ^ 2 (поскольку размеры жесткого диска будут казаться больше, чем они есть на самом деле).

На самом деле, большинство людей сбиты с толку стандартом IEC (множитель 1000) и традиционным значением (множитель 1024). В общем, не следует делать предположений о том, что имеют в виду люди. Например, 128 кбит / с для MP3 обычно означает 128000 бит, поскольку множитель 1000 в основном используется с единичными битами. Но часто люди тогда называют 2048 кбит / с равным 2 МБит / с - сбивает с толку, а?

Так что, как правило, не доверяйте битам / байтам вообще;)

AndiDog
источник
18

Кстати: производители жестких дисков не считают это авторитетом!

О, да, они это делают (и определение, которое они принимают из SI, является правильным). По связанной проблеме см. Этот пост на CodingHorror.

Федерико А. Рампони
источник
4
Извините, отрицательный голос, но их определение Mega ЕСТЬ правильное, что бы ни думали программисты. Я могу жить с M = 2 ^ 20, хорошо, но это только по историческим причинам.
Федерико А. Рампони,
+1 за дерзость противостоять компаниям HD и энтузиастам стандартов SI против всех остальных!
Джеффри Л. Уитледж, 02
11
Спасибо, Джеффри :), но это касается не только производителей HD: ваш процессор работает с частотой 2600 МГц; Ваш математический процессор выполняет XY Mflops; Ethernet делает 100 Мбит / с; Ваша камера делает 5 мегапикселей; Скорость Blu-ray 1x составляет 36 Мбит / с ... Все эти "M" означают 10 ^ 6, а не 2 ^ 20.
Федерико А. Рампони,
-1 Не уверен, что понимаю этот ответ. Какой производитель жестких дисков дал определение? Я не думаю, что CodingHorror производит жесткие диски? Я ищу авторитета, а производитель жестких дисков будет иметь слишком много предубеждений, чтобы быть объективным.
User1
1
«Органом», поддерживающим M = 10 ^ 6, является Международное бюро мер и весов. Насколько я знаю, нет никаких "авторитетов", кроме кастома, поддерживающих M = 2 ^ 20.
Федерико А. Рампони,
16

Разделить 2на в степени 20, (1024*1024)байты = 1мегабайт

1024*1024 = 1,048,576   
2^20 = 1,048,576
1,048,576/1,048,576 = 1  

Это то же самое.

Мари
источник
3

Ответ заключается в том, что номер 1 технически верен на основе реального значения префикса Mega, однако (а в жизни всегда есть, однако) математика для этого не так хороша в базе 2, как подсчитывают компьютеры. Итак, №2 - это то, что люди действительно используют.

Грант Джонсон
источник
2

Используйте вычисления, которые, скорее всего, ожидают ваши пользователи. Ваши пользователи заботятся о том, сколько фактических байтов находится на диске, в памяти или где-то еще, или их заботит только полезное пространство? Ответ на этот вопрос подскажет вам, какой расчет имеет наибольший смысл.

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

Брайан Окли
источник
1

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

Производители жестких дисков используют его для обозначения 1000000 байтов, потому что это то, что он означает в SI, поэтому они полагают, что технически они не лгут (хотя на самом деле это так). Это подпадает под ложь, чертову ложь и маркетинг.

ТЕД
источник
0

В общем, неправильно использовать десятичные префиксы СИ (например, кило, мега) при обращении к размерам двоичных данных (кроме случайного использования). Это неоднозначно и вызывает недоумение. Чтобы быть точным, вы можете использовать двоичные префиксы (например, 1 мебибайт = 1 MiB = 1024 kibibytes = 2 ^ 20 байтов). Когда кто-то другой использует десятичные префиксы SI для двоичных данных, вам нужно получить больше информации, прежде чем вы сможете понять, что имеется в виду.

Стивен Халтгрен
источник