Преобразование байтов в мегабайты - PullRequest
93 голосов
/ 02 марта 2010

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

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

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

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

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

Ответы [ 9 ]

105 голосов
/ 02 марта 2010

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

23 голосов
/ 02 марта 2010

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

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

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

15 голосов
/ 03 марта 2010

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

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

9 голосов
/ 20 июня 2014

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

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

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

3 голосов
/ 02 марта 2010

Вот что говорит стандарт (SI):

http://physics.nist.gov/Pubs/SP330/sp330.pdf#page=34

2 голосов
/ 02 марта 2010

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

2 голосов
/ 02 марта 2010

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

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

1 голос
/ 02 марта 2010

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

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

0 голосов
/ 03 мая 2018

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

...