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

45

Esta pregunta me hizo preguntarme sobre las diferencias entre estas tres formas de medir el tamaño: un kibibyte , un kilobit y el kilobyte convencional.

Entiendo que estas mediciones tienen diferentes usos (la velocidad de transferencia de datos se mide en bits / segundo), pero no estoy muy seguro de si puedo distinguir la diferencia entre Mb y MB y MiB.

Aquí hay un comentario, reproducido a continuación, tomado de esta respuesta ( énfasis mío ).

El C64 tiene 65536 bytes de RAM. Por convención, el tamaño de la memoria se especifica en kibiBytes , las tasas de transferencia de datos en kilobits y el almacenamiento masivo en lo que sea que los fabricantes piensen en Bytes . Los discos duros usan T, G, M y k en la etiqueta, Windows informa el tamaño en Ti , Gi , Mi y ki . ¿Y esos disquetes de 1.44MB? Esos no son 1.44MB ni 1.44MiB, son 1.44 kilokibibytes. Eso es 1440 kB o 1'474'560 bytes. - Tercero

Rojo y blanco
fuente
12
Habrá confusión en los próximos años. En los primeros días de la informática, la gente notó que era claramente mucho más fácil trabajar con factores de 1024 en lugar de 1000 para las computadoras. Por lo tanto, durante décadas, el prefijo SI estándar "kilo" se usó (y todavía se usa con mucha frecuencia) para el 1024 no estándar, y se convirtió en un estándar de facto en informática. Excepto que algunas personas todavía usaban el SI 1000 de todos modos. Para solucionar el desastre, "kibi" ahora se define oficialmente como un factor 1024, pero llegó demasiado tarde para una transición fácil. "kilo" será usado / abusado regularmente por 1024 factores por un tiempo todavía.
Steve314
Habría ayudado la adopción si no hubieran elegido prefijos que parecieran estúpidos; incluso un acrónimo requiere que alguien "aspire mentalmente" la palabra. Simplemente nunca
usaré

Respuestas:

63
1 KiB (Kibibyte) = 1,024 B (Bytes) (2^10 Bytes)
1 kb  (Kilobit)  =   125 B (Bytes) (10^3 Bits ÷ (8 bits / byte) = 125 B)
1 kB  (Kilobyte) = 1,000 B (Bytes) (10^3 Bytes)

Es lo mismo con cualquier prefijo SI; k(1x10 3 ), M(1x10 6 ), G(1x10 9 ), entonces, por extensión:

1 MiB (Mebibyte) = 1,048,576 B (Bytes) (2^20 Bytes)
1 Mb  (Megabit)  =   125,000 B (Bytes) (10^6 Bits ÷ (8 bits / byte) = 125,000 B)
1 MB  (Megabyte) = 1,000,000 B (Bytes) (10^6 Bytes)

Los únicos que son un poco diferentes son los Prefijos Binarios IEC (kibi / mebi / gibi, etc.), porque están en la base 2, no en la base 10 (por ejemplo, todos los números equivalen a 2 algo en lugar de 10 algo ). Prefiero simplemente usar los prefijos SI porque me parece mucho más fácil. Además, Canadá (mi país) usa el sistema métrico, por lo que estoy acostumbrado, por ejemplo 1kg = 1000g(o 1k anything = 1000 base things). Ninguno de estos es incorrecto o correcto; solo asegúrate de saber cuál estás usando y a qué equivale realmente.

Para apaciguar a los comentaristas:

1 Byte (B) = 2 nibbles = 8 bits (b)

Por eso, si alguna vez has echado un vistazo en un editor hexadecimal, todo se divide en dos caracteres hexadecimales; cada carácter hexadecimal es del tamaño de un mordisco, y hay dos por byte. Por ejemplo:

198 (decimal) = C6 (hex) = 11000110 (bits)
ardilla
fuente
55
+1 Mencionar que hay 8 bits en un byte puede ser útil.
paradroid
44
¡... y no olvides que un nybble es de cuatro bits (o medio byte)!
Linker3000
44
También podría ser consciente de que la "b" minúscula a veces se usa incorrectamente para abreviar "bytes". Veo que muchos lugares solo usan "bit" en la apertura, como MB para megabyte y Mbit para megabit, y se mantienen alejados de "b" por completo.
James
44
El prefijo kilo se abrevia k, no K.
garyjohn
1
@Redandwhite No, usan la base 10 para medir su almacenamiento, pero nuestras computadoras usan la base 2. Esto explica la discrepancia entre lo que está impreso en la caja y lo que aparece en la computadora. Por ejemplo, 500GB (box) = 465.7GiB (computer)(y así es como te atrapan).
ardilla
9

Hay algunos términos básicos que son simples y fáciles de entender:

* A bit      (b)   is the smallest unit of data comprised of just {0,1}
* 1 nibble   (-)   = 4 bits (cutesy term with limited usage; mostly bitfields)
* 1 byte     (B)   = 8 bits (you could also say 2 nibbles, but that’s rare)

Para convertir entre bits y bytes (con cualquier prefijo), simplemente multiplique o divida por ocho; Agradable y simple.

Ahora, las cosas se vuelven un poco más complicadas porque hay dos sistemas de medición de grandes grupos de datos: decimal y binario . Durante años, los programadores e ingenieros de computadoras utilizaron los mismos términos para ambos, pero la confusión eventualmente provocó algunos intentos de estandarizar un conjunto adecuado de prefijos.

Cada sistema utiliza un conjunto similar de prefijos que se pueden aplicar a bits o bytes. Cada prefijo comienza de la misma manera en ambos sistemas, pero los binarios suenan como una charla infantil después de eso.

El sistema decimal es base 10, al que la mayoría de las personas está acostumbrada y se siente cómodo porque tenemos 10 dedos. El sistema binario es base-2 al que la mayoría de las computadoras están acostumbradas y cómodas porque tienen dos estados de voltaje.

El sistema decimal es obvio y fácil de usar para la mayoría de las personas (es lo suficientemente simple como para multiplicarlo en nuestras cabezas). Cada prefijo aumenta en 1,000 (la razón de esto es un asunto completamente diferente).

El sistema binario es mucho más difícil de usar para la mayoría de las personas que no usan computadoras, e incluso los programadores a menudo no pueden multiples números arbitrariamente grandes en sus cabezas. Sin embargo, es una simple cuestión de ser múltiplos de dos. Cada prefijo aumenta en 1.024. Una "K" es 1,024 porque esa es la potencia más cercana de dos a la "k" decimal de 1,000 (esto puede ser cierto en este punto, pero la diferencia aumenta rápidamente con cada prefijo sucesivo).

Los números son los mismos para bits y bytes que tienen el mismo prefijo.

* Decimal:
* 1 kilobyte (kB)  = 1,000 B  = 1,000^1 B           1,000 B
* 1 megabyte (MB)  = 1,000 KB = 1,000^2 B =     1,000,000 B
* 1 gigabyte (GB)  = 1,000 MB = 1,000^3 B = 1,000,000,000 B

* 1 kilobit  (kb)  = 1,000 b  = 1,000^1 b           1,000 b
* 1 megabit  (Mb)  = 1,000 Kb = 1,000^2 b =     1,000,000 b
* 1 gigabit  (Gb)  = 1,000 Mb = 1,000^3 b = 1,000,000,000 b

* …and so on, just like with normal Metric units meters, liters, etc.
* each successive prefix is the previous one multiplied by 1,000



* Binary:
* 1 kibibyte (KiB) = 1,024 B  = 1,024^1 B           1,024 B
* 1 mebibyte (MiB) = 1,024 KB = 1,024^2 B =     1,048,576 B
* 1 gibibyte (GiB) = 1,024 MB = 1,024^3 B = 1,073,741,824 B

* 1 kibibit  (Kib) = 1,024 b  = 1,024^1 b =         1,024 b
* 1 mebibit  (Mib) = 1,024 Kb = 1,024^2 b =     1,048,576 b
* 1 gibibit  (Gib) = 1,024 Mb = 1,024^3 b = 1,073,741,824 b

* …and so on, using similar prefixes as Metric, but with funny, ebi’s and ibi’s
* each successive prefix is the previous one multiplied by 1,024

Tenga en cuenta que la diferencia entre el sistema decimal y binario comienza pequeña (a 1K, son solo 24 bytes, o 2.4% de diferencia), pero crece con cada nivel (a 1G, son> 70MiB, o 6.9% de diferencia).

Como regla general, los dispositivos de hardware usan unidades decimales (ya sean bits o bytes) mientras que el software usa binarios (generalmente bytes).

Esta es la razón por la que a algunos fabricantes, en particular los mfgs de unidades, les gusta usar unidades decimales, porque hace que el tamaño de la unidad suene más grande, pero los usuarios se sienten frustrados cuando encuentran que tiene menos de lo que esperaban cuando ven a Windows et. Alabama. informar el tamaño en binario. Por ejemplo, 500GB = 476GiB, por lo tanto, mientras que la unidad está hecha para contener 500GB y etiquetada como tal, Mi PC muestra el binario 476GiB (pero como "476GB"), por lo que los usuarios se preguntan a dónde fueron los otros 23GB. (Los fabricantes de unidades a menudo agregan una nota al pie de página a los paquetes que indica que el "tamaño formateado es menor", lo cual es engañoso porque la sobrecarga del sistema de archivos no es nada en comparación con la diferencia entre unidades decimales y binarias).

Los dispositivos de red a menudo usan bits en lugar de bytes por razones históricas, y a los ISP a menudo les gusta anunciar el uso de bits porque aumenta la velocidad de las conexiones que ofrecen: 12Mibps en lugar de solo 1.5MiBps. A menudo incluso mezclan y combinan bits y bytes y decimales y binarios. Por ejemplo, puede suscribirse a lo que el ISP llama una línea de "12MBps", pensando que está obteniendo 12MiBps pero en realidad solo recibe 1.43MiBps (12,000,000 / 8/1024/1024).

Synetech
fuente
2
@endolith, no es cierto. En primer lugar, existen, o al menos hubo en el pasado, algunos fabricantes de unidades que utilizan unidades binarias. Segundo, te perdiste el punto. Si quisieran, podrían poner 73,400,320 en el disco, que de hecho sería 70M (i) B en lugar de 66. Usan 70,000,000 porque es más barato usar eso y todavía lo llaman "70MB". Es simple cortar esquinas y muchos fabricantes lo hacen. Mira la comida; en lugar de 500G, pondrán 454G porque equivale a 1LB. Peor aún, en lugar de 454G, pondrán 450G y culparán al 4G faltante del redondeo. No es una conspiración, es una reducción de costos.
Synetech
1
Proporcione algunos ejemplos de fabricantes de discos duros que utilicen unidades binarias.
endolito
1
@endolith, este no es un sitio de historia. Tal vez cuando haga un poco de limpieza de primavera y desenterre algunos discos viejos, publique una foto o algo así. De lo contrario, puede ir a un museo de historia de la informática o una tienda de informática familiar y encontrar algunos discos duros viejos si es tan importante para usted. En estos días, la mayoría de los fabricantes usan etiquetas a propósito que hacen que las cosas suenen más grandes. Como dije, podrían hacer 73,400,320 bytes para hacer una unidad de 70 MB si quisieran, pero ¿por qué molestarse cuando pueden ahorrar y técnicamente llamarlo 70 MB? Nuevamente, no es una conspiración, es un engaño de marketing común.
Synetech
2
Ya he revisado los archivos de los protectores de bits, y todos los ejemplos que encuentro son decimales. Este mito de que los fabricantes de unidades cambiaron de binario a decimal en algún momento para engañar a los clientes es una locura. No fueron escritos por departamentos de marketing, sino por ingenieros que utilizan las unidades estándar que utilizan los ingenieros. Es lógico y sensato llamar a una unidad IBM 3340 de 70,000,000 bytes "70 MB". Eso es lo que "mega-" siempre ha significado y eso es lo que los usuarios esperarían. Llamarlo "66 MB" en algunos lugares y "68,359 KB" en otros lugares, como lo hace Microsoft Windows, es una locura.
endolito
1
@endolith, nadie dijo que cambiaron a decimal para engañar, solo que los comercializan de esa manera a propósito a pesar de que conocen la confusión y podrían hacer que la unidad tenga 73,400,320 bytes en lugar de solo 70,000,000, que no es un número redondo en las computadoras. En cuanto a su afirmación acerca de que "siempre" significaba eso, ya hay un hilo aquí sobre cuándo comenzaron a usarse las unidades binarias y fue hace mucho tiempo, ciertamente antes de que las computadoras se convirtieran en productos de consumo.
Synetech
-4

Algunas de las respuestas no son exactas.

Primero hagamos algunas notas:

El prefijo "kilo" significa 1 000. Prefijar "kilo" a cualquier cosa significa 1 000 de ese elemento. Lo mismo es cierto para "mega" o millón, "giga" o billón, "tera" o billón, y así sucesivamente.

La razón por la que existe 1 024 en lugar de simplemente tener 1 000 es por la forma en que funciona la aritmética binaria. Binario, como su nombre lo indica, es un sistema de base 2 (tiene 2 dígitos: 0, 1). Solo puede realizar operaciones aritméticas con dos dígitos, en contraste con el sistema base 10 que usamos diariamente (0, 1, 2 ... 9), que tiene diez dígitos.

Para llegar al número 1 000 ( kilo ) usando aritmética binaria, es necesario realizar un cálculo de coma flotante. Esto significa que debe llevarse un dígito binario en cada operación hasta llegar a 1000. En el sistema base 10, 1 000 = 10 3 (siempre aumenta 10 a una potencia en la base 10), un cálculo muy fácil y rápido para que una computadora funcione sin "restos", pero en el sistema base 2, es no es posible elevar 2 (siempre eleva 2 a una potencia en la base 2) a cualquier entero positivo para obtener 1 000. Se debe utilizar una operación de punto flotante o una suma larga, y eso lleva más tiempo ejecutar que el cálculo de enteros 2 10 = 1024.

Es posible que haya notado que 2 10 = 1 024 es tentadormente cercano a 1 000 y 1 024 a 1 cifra significativa es 1 000 (una muy buena aproximación), y cuando la velocidad de la CPU era lenta como un perro viejo, y la memoria era muy limitada , esta fue una aproximación bastante decente y muy fácil de trabajar, sin mencionar la rapidez de ejecución.

Es por esta razón términos con los prefijos "kilo", "mega", "giga", etc., pegados con cifras no exactas (1 024, 2 048, 4 096, etc.). Nunca se suponía que fueran números exactos, eran aproximaciones binarias de números de base 10. Simplemente surgieron como palabras de jerga que usaban las personas "tecnológicas".

Para complicar aún más las cosas, JEDEC ha creado sus propios estándares para las unidades utilizadas en los circuitos de memoria de semiconductores. Comparemos algunas de las unidades JEDEC con las unidades SI (estándar internacional):

Kb = Kilobit (JEDEC, 1 024 bits. Observe la mayúscula 'K' y la minúscula 'b')
kB = kiloBit (SI, 1000 bits. Observe la minúscula 'k' y la mayúscula 'B')

b = bit (JEDEC, tenga en cuenta la minúscula 'b')
b = ??? (SI no define la palabra 'bit', por lo que su uso puede ser arbitrario)

B = byte (JEDEC, 8 bits. Observe la mayúscula 'B')
B = ???? (SI no define la palabra "byte" y "B" se usa para "Bel" [como en DeciBel])

KB = kilobyte (JEDEC, 1 024 bytes. Observe las mayúsculas 'K' y 'B')
kb = kilobyte (SI, 1 000 bytes. Observe el uso de minúsculas 'k' y minúsculas 'B')

El punto es que diferentes lugares usan diferentes prefijos con diferentes definiciones. No existe una regla estricta sobre cuál debe usar, pero sea coherente con la que sí usa.

Debido a la votación negativa, permítame aclarar por qué no puede hacer 1 000 en binario elevándolo a un número entero positivo.

Sistema binario:

+----------------------------------------------------------------------------------+
| 1 024ths | 512ths | 256ths | 128ths | 64ths | 32nds | 16ths | 8ths | 4s | 2s | 0 |
+-----------------------------------------------------------------------------------

Observe que en el sistema binario, las columnas se duplican cada vez. Esto contrasta con el sistema base 10 que aumenta en 10 cada vez:

+--------------------------------------------------------------------------+
| 1 000 000ths | 100 000ths | 10 000ths | 1 000ths | 100ths | 10s | 1s | 0 |
+--------------------------------------------------------------------------+

Los primeros 10 poderes en binario (base 2) son:

2 0 = 1
2 1 = 2
2 2 = 4
2 3 = 8
2 4 = 16
2 5 = 32
2 6 = 64
2 7 = 128
2 8 = 256
2 9 = 512
2 10 = 1 024

Como puede ver, no es posible elevar el binario 2 a ningún entero positivo para alcanzar 1 000.

user3005790
fuente
3
Creo que eres incorrecto cuando afirmas que el número 1000 necesita aritmética de punto flotante. Puede representar cualquier número natural utilizando cualquier tipo de sistema de numeración. En realidad, el equivalente binario de 1000 es 1111101000 .
Doktoro Reichard
Doktoro, recuerde que estamos trabajando en el sistema binario, o en la base 2, de modo que usted es incorrecto. Aquí están las primeras 10 potencias de 2 en binario (base 2): 2 ^ 0 = 1. 2 ^ 1 = 2. 2 ^ 3 = 4. 2 ^ 4 = 8. 2 ^ 5 = 16. 2 ^ 6 = 64 . 2 ^ 7 = 128. 2 ^ 8 = 256. 2 ^ 9 = 512. 2 ^ 10 = 1024. Observe que la respuesta es exponencial, se duplica cada vez que aumenta el exponente en 1. Así que ya ve, no es posible elevar un binario 2 (un BINARIO 2 ... no una base diez 2) a cualquier entero positivo para hacer 1 000. De todos modos aprecio el voto negativo.
user3005790
Esto no explica que sea diferente entre un bit y un byte. En realidad, hay una "regla rápida y dura" 1 Kb es mil bits 1KB es mil bytes. Hay una gran diferencia 8 Kb es 1 KB.
Ramhound
3
Aunque esta afirmación es correcta, aún no necesita realizar ningún tipo de aritmética de coma flotante. Entiende los poderes de 2, por lo que también puede comprender que 1111101000 = 2 ^ 9 + 2 ^ 8 + 2 ^ 7 + 2 ^ 6 + 2 ^ 5 + 2 ^ 3 = 1000.
Doktoro Reichard
1
No creo que "nunca hayan sido números exactos, eran aproximaciones binarias de números de base 10" es cierto; Creo que es solo el resultado del hardware que estaba (está) limitado al almacenamiento de unos y ceros, y el direccionamiento de hardware mediante registros binarios. Ambos son de base 2; no está relacionado con los cálculos aproximados de base 10, creo. Además, no veo el punto que está haciendo sobre los cálculos. No es que la salida de la computadora muestre 1024 donde realmente pretendía mostrar 1000, o 1000 cuando internamente sería 1024. ¿A qué cálculos se refiere?
Arjan