¿Cuál es el origen de K = 1024? [cerrado]

73

¿Por qué existe la discrepancia en el número de bytes en un kilobyte? En algunos lugares he visto el número 1024 (2 10 ) mientras que en otros es 1000 (y la diferencia se hace cada vez mayor con M, G, T, etc.).

Esta no es una discusión sobre si debería ser 1024 o 1000 (aunque puede discutirlo en los comentarios) sino sobre dónde / cuándo se originó y / o se generalizó esta situación.

Hasta donde sé, los fabricantes de Linux y hardware nunca usan la variante 1024. Eso y, según dicen, MS-DOS hizo que esta versión fuera común, pero ¿cuáles son los hechos?

Bart van Heukelom
fuente
23
Una representación está en binario (2 ^ 10 o 1024) mientras que la otra está en decimal (10 ^ 3 o 1000) ...
Trezoid
13
Si está buscando personas específicas a quienes culpar, señale a los fabricantes de discos duros. Hace que sus dispositivos parezcan tener más capacidad cuando se expresa en MB decimales, GB, etc. Creo que siempre han hecho esto, pero no ha sido hasta hace relativamente poco tiempo que la brecha entre decimal y binario ha crecido lo suficiente. Importar significativamente.
LawrenceC
23
@ultrasawblade: ¿Quieres culpar a los fabricantes de HDD por ser uno de los únicos grupos que usan el término gigabytecorrectamente?
paradroid
13
Siempre me pareció entendido que 1K = 1024 con cualquier cosa relacionada con la computadora antes de 20GB o más, las unidades se volvieron comunes. Esto también coincide aproximadamente con el momento en que muchas personas no técnicas comenzaron a usar PC de forma regular. Grandes cantidades de literatura informática (técnica y no técnica) de principios de los 90 y antes no menciona nada sobre KB "decimales" o "kibibytes".
LawrenceC
13
@paradroid: gigabyte originalmente significaba 1024 mb (y mb = 1024 kb, etc.). Se volvió a configurar para que signifique 1000 porque los fabricantes de HDD insistieron en usarlo incorrectamente. Es cierto que esto depende de lo que consideres "correcto", ya que kilo significa 1000, pero dentro de la informática, el kilobyte siempre fue 1024 por razones técnicas hasta que se cambió en 1999.
James

Respuestas:

63

Se remonta bastante tiempo y se detalla aquí . Parece que puedes culpar a IBM, si alguien.

Después de pensarlo un poco más, culparía a los estadounidenses en su conjunto, por su evidente desprecio por el Système international d'unités : P

paradroid
fuente
31
Siempre es fácil culpar a los estadounidenses.
Notinlist
13
@Notinlist: es una broma.
paradroid
55
Me recuerda una escena épica de la película Pulp Fiction ... La que tiene la pregunta sobre el "sistema métrico". :-)
Pierre Watelet
77
@Notinlist Es fácil culpar siempre a los estadounidenses. Por eso lo hacemos tanto. Eso y el hecho de que es divertido.
Singletoned
3
La entrada de 1961 allí es interesante, ya que menciona "65k" - siendo el primer orden de magnitud que puede mostrar una clara diferencia entre "k = 1024" y "k = 1000, redondeado", se reduce claramente para el último. En 1964, por otro lado, todos usan los significados binarios.
Random832
26

Toda la informática era de bajo nivel al principio. Y en la programación de bajo nivel, el número "1000" es totalmente inútil y necesitaban prefijos para cantidades mayores, por lo que reutilizaron los SI. Todos lo sabían en el campo, no había confusión. Sirvió bien durante 30 años o quién sabe.

No es porque fueran estadounidenses, por lo que necesitaban romper la IS a toda costa. :-)

No hay programador que yo conozca y dice kibibyte. Dicen kilobytes y significan 1024 bytes. Los algoritmos están llenos de poderes de 2. Incluso hoy, "1000" es un número realmente inútil entre programadores.

Decir kibi y mibi es demasiado divertido y llama la atención sobre el tema. Felizmente lo regalamos a los sectores de telecomunicaciones y almacenamiento en disco :-). Y escribiré kibibytes en las interfaces de usuario donde los no programadores puedan leerlo.

No en lista
fuente
3
Es aún más divertido decirlo cuando se habla de bits - "mibibit"
James
3
Creo que KiB, etc. se supone que se pronuncia kilobinarybyte, etc. y no kibibyte.
Lie Ryan
2
@Lie Ryan, el uso de prefijos como "kilobinarybyte" fue una propuesta que finalmente fracasó y, de todos modos, tenía abreviaturas diferentes a las de kibibyte. Ver en.wikipedia.org/wiki/Binary_prefix
Ben Lee
3
Entonces, ¿sería justo pronunciar km como kilodecimalmetros?
JustJeff
3
El número 1000 no es "totalmente inútil". "k = 1000" se ha utilizado en informática desde la década de 1950. Las primeras computadoras eran en realidad máquinas decimales, no binarias. La velocidad de la red siempre se ha medido en múltiplos de 1000. "¿Sirvió bien durante 30 años"? De Verdad? Los programadores se han quejado de "k = 1024" durante al menos 43 años. en.wikipedia.org/wiki/Timeline_of_binary_prefixes
endolith
8

Es correcto y tiene sentido que las personas técnicas usen 1024 = 1K en muchos casos.

Para los usuarios finales, normalmente es mejor decir 1000 = 1k porque todos están acostumbrados al sistema numérico basado en 10.

El problema es dónde dibujar la línea. A veces, las personas de marketing o publicidad realmente no tienen éxito en la "traducción" o en la adaptación de los datos técnicos y el lenguaje a los usuarios finales.

mit
fuente
13
La gente técnica debe saber que 1024 bytes es realmente un Kibibyte (KiB), pero debe saber que el término no es conocido por personas no técnicas.
paradroid
8
¿Quién dice que es correcto? Kilo ha significado 1000 durante siglos, por lo que en mi opinión nunca deberían haberlo usado en 1024.
Bart van Heukelom
20
El byte no es una unidad SI; KB significa "kilobel" (de acuerdo, una unidad que no se desea utilizar a menos que estaban describiendo el sonido, en su caso, producida por el Big Bang.)
Wooble
10
@njd: 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.
Tercer
55
Sin embargo, las variantes kiB, etc. son bastante nuevas. No creo que estuvieran en uso cuando surgió este problema, sin duda, ¡tenía la impresión de que se hicieron exactamente para resolverlo!
Shinrai
3

Culpe a los fabricantes de semiconductores (solo nos proporcionan hardware binario) [1]

Mejor aún: culpe a la lógica misma (la lógica binaria es solo la lógica más elemental).

Mejor aún: ¿a quién debemos culpar por el miserable sistema decimal ?

Tiene muchos más defectos que el sistema binario. Se basó la tos en el número promedio de dedos en la tos de la especie humana

Oooo ...

[1] ¡Quiero mi computadora cuántica de tres qubits! ¡Ahora!

sehe
fuente
29
Creo que encontrarás que el número promedio de dedos es inferior a 10 </pedant>
Rory Alsop
1
@Rory: ^ fue una buena risa
Mehrdad
2
@Rory: "menos" </pedant>. ¿O es eso? Espera un minuto, aargh ...
outsideblasts
1

No se debe culpar a 1024, es algo realmente bueno, ya que es la razón por la cual la computadora (digital) puede ser tan rápida y eficiente como lo es hoy. Debido a que la computadora solo usa el valor 2 (0,1), elimina la dificultad y la complejidad (inexactitud) del sistema anológico fuera de la ecuación.

Sería más complicado si dijéramos que un kilobyte es 1000 bits porque 2 a qué potencia es 1000? así que incluso 1 kilobyte sería inexacto porque tendrá puntos flotantes o una aproximación.

Pero en gran parte culpo al marketing por vender 8 gigabytes * y agregar esto en letra pequeña

* 1 gigabyte is 1,000,000,000 bytes. 

es una lástima realmente, eso es lo mismo con la velocidad de conexión, su ISP dirá 1.5Mbps en lugar de decirle ~ 150 kiloBytes. es muy engañoso

Ibu
fuente
3
Al decir qué tan grande es un archivo de 15682 bits, o qué tan rápido se puede transferir dicho archivo a través de una red, las potencias de 2 no juegan ningún papel. Y ese es el contexto donde está la mayor confusión.
Bart van Heukelom
2
Finalmente, el archivo se almacena en páginas de memoria, que están alineadas con los límites de potencia binarios. Al enviar a través de TCP, el tamaño de la ventana en la que se envían los paquetes es múltiplos de potencias de dos. Cuando el archivo se almacena en el disco duro, se almacena en bloques de potencias de dos. Entiendo lo que estás diciendo, pero kilobyte = 1024 (o al menos múltiplos de potencias de dos) está muy arraigado en la informática.
FryGuy
1
Para ser justos, las redes siempre han utilizado bits como base.
Synetech
1
El primer disquete de 5.25 "contenía 109,375 bytes y se anunciaba como" 109.4 Kbytes ". ¿Supongo que también hicieron esto por razones de marketing mal? ¿Crees que sería más lógico escribirlo como" 106.8 KB "? ¿Y unidades de cinta y procesador velocidades y velocidades de módem se miden en decimal para engañarnos favor?.
endolito
1
@Ibu: la diferencia entre 1,000,000,000 bytes y 1GB es 0. De hecho, ¿por qué los fabricantes de disquetes inflarían maliciosamente sus números cuando la diferencia es tan pequeña? No lo harían. Usaron 1000 porque es lógico, obvio y correcto, no porque sean parte de una conspiración para defraudar a los clientes. Los fabricantes de discos duros han estado midiendo en miles desde los años MB, también, por la misma razón.
endolito el
0

Cuando considera que los números en las computadoras son binarios, y 2 ^ 10 es 1024, tiene mucho sentido. Es mucho más fácil trabajar con 1024 en lugar de 1000, porque puedes dividir fácilmente entre 1024 usando solo matemática entera y desplazamiento de bits . Dividir por 1000 es una operación mucho más costosa, que puede necesitar matemática de punto flotante.

P.ej

bytes = 1 073 741 824
kilobytes = bytes >> 10 = 1 048 576
megabytes = kilobytes >> 10 = 1024
gigabytes = megabytes >> 10 = 1
Jo-Herman Haugholt
fuente
¿En serio crees que el tiempo de cálculo es relevante? ¿Por qué las computadoras no procesan "km" como "1024 m", entonces, si es tan difícil de convertir?
endolito el
@endolith Sí, creo que sí, al menos históricamente. Si bien puede ser insignificante hoy, en los primeros días cuando cada ciclo de CPU era premium, un cálculo rápido y fácil que ofreciera una respuesta decente sería preferible para algo como esto. Especialmente si la gente supiera por convención que 1 KB significa 1024 bytes.
Jo-Herman Haugholt