Conversión de bytes a megabytes


He visto tres formas de hacer la conversión de bytes a megabytes:

  1. megabytes = bytes/1000000
  2. megabytes = bytes/1024/1024
  3. megabytes = bytes/1024/1000

Ok, creo que el #3 está totalmente equivocado, pero lo he visto. Creo que #2 es correcto, pero estoy buscando alguna autoridad respetada (como W3C, ISO, NIST, etc.) para aclarar qué megabyte es un verdadero megabyte. ¿Puede alguien citar una fuente que explique explícitamente cómo se realiza este cálculo?

Bono pregunta: si #2 es un megabyte ¿cómo se llaman #1 y #3?

POR cierto: Los fabricantes de discos duros no cuentan como autoridades en este caso!

Author: James A Mohler, 2010-03-02

9 answers

Tradicionalmente por megabyte nos referimos a su segunda opción -- 1 megabyte = 220 bytes. Pero no es correcto en realidad porque mega significa 1 000 000. Hay un nuevo nombre estándar para 220 bytes, es mebibyte (http://en.wikipedia.org/wiki/Mebibyte) y recoge la popularidad.

 94
Author: Andrey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 17:21:46

Hay un estándar IEC que distingue los términos, por ejemplo, Mebibyte = 1024^2 bytes pero Megabyte = 1000^2 (para ser compatible con unidades SI como kilogramos donde k/M/... significa 1000/1000000). En realidad, la mayoría de las personas en el área de TI preferirán Megabyte = 1024^2 y los fabricantes de discos duros preferirán Megabyte = 1000^2 (porque los tamaños de los discos duros sonarán más grandes de lo que son).

De hecho, la mayoría de las personas están confundidas por el estándar IEC (multiplicador 1000) y el significado tradicional (multiplicador 1024). En general, no debes hacer suposiciones sobre lo que la gente quiere decir. Por ejemplo, 128 kBit / s para MP3s generalmente significa 128000 bits porque el multiplicador 1000 se usa principalmente con los bits de la unidad. Pero a menudo la gente entonces llama 2048 kBit / s igual a 2 MBit / s-confuso eh?

Como regla general, no confíes en las unidades de bits/bytes en absoluto;)

 20
Author: AndiDog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 17:19:18

POR cierto: Los fabricantes de discos duros no cuentan como autoridades en este caso!

Oh, sí lo hacen (y la definición que asumen de la S. I. es la correcta). Sobre un tema relacionado, vea este post sobre CodingHorror.

 15
Author: Federico A. Ramponi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-03 22:35:06

Dividir por 2 a la potencia de 20, (1024*1024) bytes = 1 megabyte

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

Es lo mismo.

 8
Author: Marie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-16 20:48:46

Esto es lo que dice el estándar (SI):

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

 4
Author: AVB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 17:26:29

Utilice el cálculo que sus usuarios probablemente esperarán. ¿A sus usuarios les importa saber cuántos bytes reales hay en un disco o en memoria o lo que sea, o solo les importa el espacio utilizable? La respuesta a esa pregunta le dirá qué cálculo tiene más sentido.

Esta no es una pregunta de precisión tanto como una pregunta de usabilidad. Proporcione el cálculo que sea más útil para sus usuarios.

 2
Author: Bryan Oakley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 17:49:27

La respuesta es que #1 es técnicamente correcto basado en el significado real del prefijo Mega, sin embargo (y en la vida siempre hay un sin embargo) la matemática para eso no sale tan bien en base 2, que es cómo cuentan las computadoras, por lo que #2 es lo que la gente realmente usa.

 2
Author: Grant Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 18:18:35

Megabyte significa 2^20 bytes. Sé que técnicamente eso no encaja con las unidades SI, y que algunas personas han llegado con una nueva terminología para significar 2^20. Nada de eso importa. Los esfuerzos por cambiar el lenguaje para "aclarar" las cosas están condenados al fracaso.

Los fabricantes de discos duros lo usan para significar 1,000,000 bytes, porque eso es lo que significa en SI, por lo que calculan técnicamente que no mienten (mientras que en realidad lo son). Que cae bajo mentiras, malditas mentiras, y marketing.

 1
Author: T.E.D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-02 17:36:05

En general, es incorrecto usar prefijos decimales SI (por ejemplo, kilo, mega) cuando se refiere a tamaños de datos binarios (excepto en uso casual). Es ambiguo y causa confusión. Para ser precisos, puede usar prefijos binarios (por ejemplo, 1 mebibyte = 1 MiB = 1024 kibibytes = 2^20 bytes). Cuando alguien más usa prefijos SI decimales para datos binarios, necesita obtener más información antes de poder saber lo que significa.

 0
Author: Steven Hultgren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-03 16:57:44