¿Es cierto que 1 MB puede significar 1000000 bytes, 1024000 bytes o 1048576 bytes? [duplicar]

63

Posible duplicado:
¿Cuál es la diferencia entre un kibibyte, un kilobit y un kilobyte?

Si 1 KB (kilobyte) puede significar 1000 bytes o 1024 bytes,

Y 1 MB (megabyte) puede significar 1000 KB o 1024 KB,

¿no significa eso que 1 MB puede significar cualquiera de los cuatro siguientes? :

  1. 1000 × 1000 = 1000000 bytes

  2. 1000 × 1024 = 1024000 bytes

  3. 1024 × 1000 = 1024000 bytes

  4. 1024 × 1024 = 1048576 bytes

¿O no se aceptan 2. y 3. por lo que 1 MB podría significar solo 1000000 bytes de 1048576 bytes?

Pacerier
fuente
3
¿Sabía que hay −0 (cero negativo) y +0 (cero positivo)? en.wikipedia.org/wiki/Signed_zero
Aki
44
El único lugar donde he visto diferentes prefijos mezclados son los disquetes 1.44 [algo que no es mebibyte ni megabyte].
AndrejaKo
Aki sí, pero no entiendo lo que estás tratando de decir.
Pacerier
"Si los números no son hermosos, no sé qué es". - Paul Erdős
Aki
44
Por favor, 'kB', no 'KB'.
Andreas Rejbrand el

Respuestas:

107

Primero, hay dos tipos de prefijos cuando se habla de información digital ( bytes de lectura ): prefijos SI y prefijos binarios .

Prefijos SI

Los prefijos SI son potencias de 1,000 (1,000 1 , 1,000 2 , 1,000 3 , etc.):

  • 1 kB = 1 kilobyte = 1,000 1 bytes = 1,000 bytes;
  • 1 MB = 1 megabyte = 1,000 2 bytes = 1,000,000 bytes;
  • 1 GB = 1 gigabyte = 1,000 3 bytes = 1,000,000,000 bytes;
  • Y así sucesivamente .

Como puede ver, solo los símbolos SI mega y superiores están en mayúscula. Por lo tanto, KB no es un prefijo válido .

Prefijos binarios

Los prefijos binarios son potencias de 1.024 (1.024 1 , 1.024 2 , 1.024 3 , etc.):

  • 1 KiB = 1 kibibyte = 1,024 1 bytes = 1,024 bytes;
  • 1 MiB = 1 mebibyte = 1,024 2 bytes = 1,048,576 bytes;
  • 1 GiB = 1 gibibyte = 1,024 3 bytes = 1,073,741,824 bytes;
  • Y así sucesivamente .

Como puede ver aquí, cada símbolo binario está en mayúscula y se agrega una minúscula i antes del símbolo B para indicar que estamos hablando de kibibytes en lugar de kilobytes, mebibytes en lugar de megabytes, etc.


Sin embargo , los prefijos binarios no se usan ampliamente, Windows no los usa en absoluto.

Lo que sucede aquí es que Windows nos dice que la unidad de disco duro tiene una capacidad de 300,066,795,520 bytes que, según Windows, equivale a 279 GB. Sin embargo, sabemos que si 1,000,000,000 bytes = 1 GB, 300,066,795,520 bytes = ~ 300 GB = ~ 279.5 GiB .

Por lo tanto, si ve 1 KB (que está mal, recuerde) o 1 MB, suponga que estamos hablando respectivamente de 1 kibibyte y 1 mebibyte. Kb , kb , Gb , gb , etc. también son frecuentes, a pesar de que representan bits (8 bits = 1 byte).


En resumen , en ningún caso 1 KB o 1 MB pueden tener valores múltiples, aunque el uso (malo) parezca decir lo contrario.

seriousdev
fuente
3
Tal vez debería agregar que, cuando se habla de velocidades de transferencia de datos (en bits / s), uno generalmente usa prefijos de base 10, por ejemplo, Gb / s en realidad significa "mil millones de bits por segundo".
Frank
3
Los prefijos binarios son relativamente nuevos, y todavía es muy común usar los prefijos SI para referirse a potencias de 2. Creo que muchas personas ni siquiera son conscientes de los prefijos binarios. @Novox hace un buen punto: incluso las personas que usan GB para significar 1048576 bytes de almacenamiento generalmente usan Gb / s para significar 1000000000 bits por segundo. La invención de los prefijos binarios no hizo que todo el uso fuera consistente.
Keith Thompson el
55
@kubanczyk: No estoy de acuerdo con que sea pereza, pero la pereza no es necesariamente algo malo. Nos necesitamos una manera de referirse a almacenamiento en unidades de 1024, 1.048.576, o 1073741824 bytes, y antes de la invención (relativamente reciente) de los prefijos binarios (Ki, Mi, Gi), reutilizando los prefijos SI (K, M, G) era la única forma razonable de hacerlo. Y lo hicimos durante tantos años que los prefijos K, M, G siguen siendo ambiguos. Hubiera sido mejor usar prefijos binarios y SI consistentemente desde el principio, pero eso no fue lo que sucedió.
Keith Thompson el
2
@kubanczyk No me malinterpreten, soy / soy / un fuerte defensor del uso correcto de la unidad. Aún así, no creo que "sea obvio". Si realmente fuera así, no habría preguntas como esa, ¿verdad?
Frank
3
Hmmm vamos a intentarlo al revés, ¿de acuerdo? Mira lo que pasó con 8 bits. En lugar de llamarlo decabit e insistir en que deca- a veces significa que en IT 8 no 10, alguien inventó un nuevo término y lo llamó byte. Voila! La misma solución fue posible con 1024 si no 65536.
kubanczyk
14

El kilobyte es una medida de base 10, por lo que 1 kilobyte = 10 a la potencia de 3 = 1000 bytes.

Aunque esto no es del todo exacto para medir exactamente los datos físicos, ya que se almacenan en binario que se mide en la base 2, y por lo tanto, el kibibyte se estableció en 1999 para reemplazar kilobytes cuando se usa en el contexto de la informática con un significado de 1024 bytes.

Kibibyte es una medida de base 2, por lo que 1 kibibyte = 2 a la potencia de 10 = 1024 bytes.

Lo mismo se aplica a megabyte (1 megabyte = 10 a la potencia de 6 = 1000000 bytes), cuya medida de base 2 es mebibyte (1 mebibyte = 2 a la potencia de 20 = 1048576 bytes)

  • (1) se aplica a megabyte
  • (2) y (3) no se acepta
  • (4) se aplica a mebibyte
asdjaputra
fuente
13
Si bien esto es técnicamente correcto, me gustaría señalar que, en el uso común, nadie dice kibibyte o mebibyte, y cuando se habla de 'kilobytes', las personas se refieren a la unidad que muestra Windows o el sistema operativo, que es kibibytes. El único lugar en el que he visto regularmente kilobytes utilizados correctamente es en capacidades de disco duro, lo que frustra a los usuarios sin fin.
Darth Android el
44
Sí, pero solo porque su sistema operativo no usa los prefijos SI "correctamente".
Frank
2
Aún así, MB puede significar 1,000,000 o 1,048,576 bytes . Si bien no es correcto , está muy extendido. CC @DarthAndroid
Daniel Beck
Ah, 1998 ... cuando Plutón era un planeta y un kilobyte tenía 1024 bytes.
Skrymsli
9

Actualmente, el uso de "KB", "MB", etc. para significar cualquier cosa que no sea 1000 bytes, 1000 x 1000 bytes, etc. está en desuso y es contrario a la mayoría de los estándares oficiales. La nueva forma de expresar 1024 bytes, 1024 x 1024 bytes, etc. es KiB (kibibyte), MiB (mebibyte), etc. Es un desastre, y el contexto es esencial para entender lo que significa. Ver http://en.wikipedia.org/wiki/Kibibyte para una discusión de estos temas.

kreemoweet
fuente
7

Probablemente no, porque sería un uso inconsistente de los prefijos dentro de un solo número .

Si bien el prefijo SI k significa 1000, pero en TI a menudo se usa para significar 1024 (con algunos prefijos binarios propuestos ), no tiene sentido alternativo entre estos significados en el mismo número .

Daniel Beck
fuente
@JdeBP: Nota interesante. Se podría haber sido "correcta" (en el sentido de base 2) decir 1.440 KB. Nunca pensé en / me di cuenta de la combinación de los dos "sistemas" en el número 1.44. +1.
BillP3rd
3

Tienes razón en tu pregunta. 1 y 4 son correctos, 2 y 3 no lo son.

Básicamente, usted define el "mil" que es 1000 o 1024 y lo usa para las multiplicaciones. No se intercambian.

En la base dos (binario), lo más cercano que puede llegar a 1000 limpiamente es 1024 (2 ^ 10). Así es como las computadoras realmente piensan acerca de las cosas, por lo que en la memoria (RAM), por ejemplo, 1 MB sería 1048576 bytes.

Sin embargo, en la base 10, puede tener 1000. Las unidades de disco funcionan así y en un HDD, por lo general, 1 MB será de 1000000 bytes (aunque el estado sólido funciona en binario).

Básicamente, se trata solo del hecho de que la computadora y el dispositivo de almacenamiento generalmente funcionan de manera ligeramente diferente, por lo que hay diferentes definiciones para la misma cosa.

James Billingham
fuente
1

Entonces, aquí está el trato. (La mayoría de) los ordenadores de hoy en día operan en base 2, no la base 10. (Sí, sé que hay son excepciones, pero que en realidad son casos excepcionales.) Para nuestros (sus) fines, todos los ordenadores de propósito general (y, desde luego, todo el uso del consumidor computadoras de uso general) usan la base 2 para todo el procesamiento interno. La unidad fundamental es un bit que puede ser cero o uno. Ocho de estos juntos forman un byte; 16 una palabra. Ahora, esto generalmente habla ... las computadoras de 32 bits generalmente se consideran como "palabras" de 32 bits, computadoras de 64 bits, palabras de 64 bits, etc. ¿Has notado? Estos son todos los poderes de 2. Una computadora con una "K" o kilobyte de memoria siempre tendrá 1024 bytes de memoria. Un megabyte de memoria siempre significará 1024 x 1024 bytes. Una vez más, todos son potencias de 2. Por lo tanto, una computadora con 64 MB de memoria siempre tendrá 64 x 1024 x 1024 bytes. Cuando veas computadoras anunciadas para la venta, la capacidad de memoria (RAM) siempre se basará en potencias de 2. Nunca verás una tarjeta de video, por ejemplo, reclamando 1 GB de RAM que significa mil millones de bytes.

Donde se introdujo la confusión, y lo que vuelve loca a la gente, es cuando los fabricantes de unidades de disco, en su búsqueda por ofrecer unidades cada vez más grandes, decían: "¡Oye! Sabes, en otras áreas (no en computadoras), una K es 1000 y una M es 1,000,000 ". Si un par de personas discutieran el precio de venta de un automóvil, por ejemplo, y uno sugiriera, "Creo que '8K' suena correcto", el otro entendería automáticamente que '8K' significaba $ 8,000 (no $ 8,192). Entonces, esos fabricantes de unidades de disco dijeron: "Comencemos a publicitar nuestros productos usando esas medidas para que suenen más grandes". Pero los hombres legales intervinieron y dijeron: "Espera un minuto aquí. Prácticamente todos los que, ya sabes,cómo funcionan va a llorar mal ". A lo que esos tipos inteligentes de publicidad respondieron:" No hay problema. Bueno, solo ponga un pequeño asterisco al lado de la capacidad en la caja y en nuestra documentación que dice algo así como '* 1GB = 1,000,000,000 bytes'. Problema resuelto."

Así que aquí estamos, con toda esta confusión. Citando el artículo wiki anterior, al que hace referencia @kreemoweet,

En la mayoría de los casos, el kilobyte se sigue utilizando para referirse a una potencia de diez, así como a una potencia de dos.

Y la confusión continúa. Para fines prácticos, probablemente debería suponer que las capacidades de disco se basan en unidades de medida de base 10. Del mismo modo, las capacidades de RAM (probablemente) siempre se basarán en unidades base 2. Para otros tipos de dispositivos y productos, probablemente dependerá de la tecnología subyacente y de lo que la gente de publicidad piense que pueden salirse con la suya. Después de todo, más grande es mejor, ¿no?

Para alguna lectura adicional, puede leer detenidamente la línea de tiempo de los prefijos binarios . No aclarará las cosas, pero es una lectura divertida.

BillP3rd
fuente
2
¿estás seguro de que es solo marketing puro? tal vez también esté relacionado con la estructura / organización del almacenamiento en sí.
barlop
3
-1 No es una cosa de marketing y no fue para hacer que las unidades de disco suenen más grandes. Esa es una explicación ampliamente propagada pero sin embargo totalmente falsa. También es una inferencia basada en la gran ignorancia del tema. La Comisión Electrotécnica Internacional y el Instituto de Ingenieros Eléctricos y Electrónicos en realidad expusieron la justificación, que tiene que ver con hacer que diferentes disciplinas de ingeniería hablen el mismo idioma y no se confundan entre sí, en 1997 en un artículo de IEEE Standards Bearer . Esto es en gran medida una cuestión de ingeniería práctica .
JdeBP
44
Mi experiencia trabajando para Miniscribe y luego para Maxtor en los años 80 y 90 como ingeniero me informa lo contrario. Como ingenieros informáticos, tendemos a gravitar hacia potencias de 2. Un byte siempre será de 8 bits. Como agrega @barlop, a diferencia de la memoria de la computadora principal, las unidades de disco giratorias pueden tener una estructura / organización muy diversa. Aún más, ya que la tecnología de manejo ha avanzado de tal manera que el número de sectores por pista varía desde el borde interno al externo de la superficie de grabación. Tenga en cuenta que los sectores aún tienen 512 bytes. (Ese molesto poder de 2 otra vez).
BillP3rd
1
Esa es una falta de experiencia: una visión estrecha y miope de la ingeniería. Vaya y lea el artículo IEEE Standards Bearer . Es precisamente el tipo de parpadeo "Pero la gente siempre usa poderes de dos". pensando, que luego sale terriblemente mal cuando golpea a la mayoría de la ingeniería que no está parpadeada así, que esto fue y está dirigido directamente. Como dije, este es un asunto práctico de ingeniería , e irónicamente demuestras el problema al que apuntaban. No es marketing, y no se trata de hacer que algo suene más grande. Eso es basura fabricada total. No lo creas
JdeBP
1
@JdeBP seguro que los ingenieros definitivamente idearon los términos kibibyte, etc., que es demostrable. Y qué proporción de ingenieros en el mundo del disco duro lo usan, no lo sé. Pensé que tal vez sabrían por contexto lo que quieren decir con kilobytes y no necesitarían el bocado de kibibyte, o tal vez no. Parece que BillP3rd cree que lo sabrían y que sería base2, y cree que deben especificar para saber entre ellos. Pero el marketing hubiera elegido usar la unidad más pequeña, el prefijo decimal en el paquete. Me pregunto si el marketing lo estaba haciendo incluso antes de ese artículo de IEEE.
barlop
0

Sí, ya que es un desastre sintáctico. Este artículo de Wiki explica el problema e incluye una tabla de las "nuevas" palabras que se utilizarán. Aquí en el mundo real nadie usa esos términos. Debe usar el contexto para determinar qué definición está viendo.

Jim B
fuente
44
-1 para ese "nadie". Los uso aquí en el mundo real, y estoy lejos de estar solo.
JdeBP
1
Si el consumidor promedio le preguntara a un vendedor la capacidad de memoria de una computadora que estaba pensando comprar y se le dijo "4 gibibytes", no tendrían idea de lo que significaba. Del mismo modo, la gran mayoría de las personas nunca diría las palabras en voz alta "gibibyte, tibibyte, pibibyte, etc." En serio, trata de decir "gibibyte" en voz alta tres veces más rápido que puedas. Puedo decir eso por mí mismo, al menos, nunca los he escuchado. (Para el contexto, trabajo para una gran empresa de software de la que probablemente haya oído hablar y que habitualmente
maneja
+1 por mencionar esos términos divertidos y que la mayoría no los usa y usa el contexto
barlop
1
"nadie" significa "nadie", niño, y no cambia mágicamente por contexto para que signifique algo diferente de lo que significa la palabra. Es una falsedad, sin embargo, intentas cortarlo.
JdeBP
1
@JdeBP: lo siento, Jdebp, pero desear no lo hace así. La existencia misma del término kibibyte es una prueba de que había (y todavía hay) confusión sobre lo que se entiende. Lamento que haya estado atrapado con este término durante una década (debe haber sido difícil encontrar discos duros con valores de kibibyte en 2000). También te sugiero que trabajes en la edición de ese artículo wiki al que hice referencia, claramente también deben estar equivocados sobre la falta de uso (deben haberte dejado fuera de la lista de votación).
Jim B