bytes perdidos

[Visto: 2961 veces]

Hola, ínclito lector. Espero que me manyes, ya que tengo que hablarte de algo bastante importante y que seguro te afecta en la misma medida que lo hace a mí. Pero antes de entrar en materia tengo que justificar y explicar algunas cosas, así que espero que leas lo que viene si no con interés porque te resulte ya conocido, sí al menos con cierta condescendencia hacia este penitente del teclado. En fin..

La unidad básica de información es el bit, que es un uno o un cero, aunque la representación real pueda ser diferente, como un flanco de subida para el uno y uno de bajada para el cero. O al revés. O incluso mediante lógica negativa se puede representar un 1 como ausencia de tensión y un cero como presencia. A nivel lógico no nos importa mucho, ya que de la forma que se represente el contenido de información es el mismo.

Históricamente los bits se agrupan en bytes, que son 8 bits juntos. No vamos a entrar en muchos detalles en por qué se implementó de esta forma y no, por ejemplo, que 10 bits formaran 1 byte. El hecho, igual que antes, es que a un grupo de 8 bits se le asigna el nombre de byte y dicho byte se trata como la unidad básica de información en informática.

Con 1 byte podemos representar hasta 255 valores diferentes aparte del cero mediante combinaciones de ceros y unos. Empezando con 00000000b para el cero, siguiendo con 00000001b para el número 1, 00000010b para el 2, 00000011b para el tres hasta 11111111b, que representa el número 255 (o -127, según se mire, pero de nuevo no vamos a entrar en detalles).

Otra forma de representar un byte es mediante números hexadecimales, es decir, números en base 16, en los que por convención los dígitos válidos son 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Si nos fijamos un poco observamos que el número binario 11111111b se puede representar como FF en hexadecimal. O como nos gusta a los informáticos: 0xFF.

Pero lo más curioso del tema es que 28 es el número de valores posibles que caben en un byte, es decir, 28=256 (o sea, 255 más el cero). Si nos damos cuenta el número es 256 y no 250, porque estamos trabajando en números binarios y al hacer la conversión matemática y real es lo que nos da. Y no podemos modificar la matemática porque es así. Lo que sí podríamos hacer es crearnos un sistema numérico en el que 28 fuera 250. Pero no valdría para nuestro universo.

Siguiendo con el tema, si juntamos dos bytes uno al lado del otro, obtenemos un número que se puede representar con 0xFFFF en hexadecimal o bbbb bbbb bbbb bbbb en binario, en donde cada b representa un uno o un cero. Y su valor máximo, o el máximo número de valores que podemos guardar ahí son 28×28, es decir 28+8=216=65536. Y no 65000. Y son matemáticas casi de escuela primaria.

Pero adelantemos un poco. ¿Qué ocurre si medimos en cantidad de miles de bytes en lugar de en bytes, subiendo la escala tres órdenes? A poco que uno sea riguroso pensando, deducirá que un kilo-byte son 1024 bytes. Es decir, 1KByte=1024Byte. Veamos por qué.

Si trabajamos en metros y queremos pasar una cantidad a kilómetros, multiplicamos por 1000, es decir, por 103. En otras palabras, elevamos al cubo la base numérica. Pero lo que en base decimal es fácil, en base binaria no lo es tanto. Y tenemos que sumergirnos en razones históricas sobre el diseño y la arquitectura de los ordenadores. Intentaremos ser breves.

Tradicionalmente la construcción de computadores ha sido muy cara, y más cara todavía la construcción de memoria. Toda la informática está basada en lo que se conoce como báscula (latch en inglés) lógica, generalmente de tipo D. Una báscula representa 1 bit. 10 básculas, 10 bits. Pero con 10 básculas podemos guardar 210 números diferentes, que son 1024 valores. No 1000 ni 1100. Y en la época en la que se diseñaron los primeros ordenadores, desperdiciar 24 números de cada 1000 era un derroche impensable, aparte de que calculando así obtenemos más ventajas que no son observables a simple vista, pero que están ahí. Como evitarnos lógica física (o sea, electrónica) para evitar esos 24 números que nos sobran.

¿Qué ocurre si juntamos un grupo de 8 básculas y las optimizamos para que sean 1 byte (que llamaremos por simplicidad báscula-8) y luego juntamos grupos de 10 básculas-8? Pues que tenemos 1024 formas de almacenar 1 byte. No 1000 ni 1100. Y volvemos al tema anterior del desperdicio de esos 24 números posibles.

Quizás no sea la combinación perfecta, pero es la que hay. En su momento se decidió por agrupar los bits en atados de 8 para que cupieran exactamente dos dígitos hexadecimales, y luego agrupar dichos atados de 8 bits en atados de 10. Podrían haber agrupado dichas básculas-8 en grupos de 8, pero entonces habría que trabajar en números octales, y estos no presentan las ventajas de los hexadecimales (de hecho en un tiempo se trabajó con ellos, pero rápidamente fueron descartados). También podrían haber agrupado los bits de 10 en 10, pero ocurría lo mismo, los números no cuadraban de forma “mágica”.

Y si agrupamos 10 grupos de 10 básculas-8 por cada báscula-8 en una especie de matriz de dos dimensiones obtendremos 210×210 bytes, es decir, 1024×1024 o lo que es lo mismo, 1.048.576. Y si lo ajustáramos a nuestro formato decimal, ahora estamos perdiendo 48.576 “celdillas mágicas” por un quítame allá esas pajas.

Hay más razones para estos agrupamientos, como el hecho de que 210 es un número natural dentro del sistema de numeración en base 2, mientras que el número 103 no tiene representación directa. También está el hecho del direccionamiento físico de las líneas de datos y direcciones dentro de un microprocesador y de una memoria, pero vamos a detenernos aquí.

Así que ocurrió lo que tenía que pasar: 1KByte pasó a ser 1024Bytes, la correlación era instantánea y prácticamente irresistible. Y 1Mbyte = 1024 Kbyte. Y así subiendo de escala.

Trabajando así tenemos dos ventajas a la hora de fabricar chips de memoria: tenemos una cantidad de celdas extra (y gratis) y encima el proceso de fabricación es más sencillo. El Sistema Internacional de Pesas y Medidas ha protestado, pero no ha regularizado porque es absurdo forzar la escala decimal, absurdo y muy caro en implementación física. Y a fecha de hoy, hablando dentro del mundo de la informática, un kilobytes son 210=1024 bytes, por mucho que algunos rabien.

¿Pero qué ocurre cuando vas a una tienda a comprar un chip de memoria para tu ordenador? Llegas al mostrador y pides un módulo de “un giga”. ¿Y qué te venden, medido en bytes? Pues 1 GByte = 1024 MByte = 1024×1024 Kbyte = 1024x1024x1024 Byte. O 1 GByte = 210 MByte = 220 Kbyte = 230 Byte. A fin de cuentas, te están vendiendo 1.073.741.824 bytes. Y desde luego si ese módulo llevara 1.000.000.000 seguro que reclamarías esos setenta y tres mil y pico bytes que faltan. Además, fíjate que podrías comprar 512 “megas”, no 500, sino 512. O 256, pero no 250.

Sin embargo, veamos qué ocurre cuando vas a comprarte un disco duro. Llegas a la tienda y pides uno de 120 “gigas”. Vas todo contento, lo montas y… descubres que ¡sólo tiene 111,79! ¿Y eso? Te faltan 8,21 GB. ¿Se perdieron por el camino? No, porque cuando lo instalas y lo formateas en una sola partición descubres tus 120 GB. Pero 120 justitos, justitos.

Vaya. Haciendo cálculos descubres que 120 GB son 128.849.018.880 bytes. Sin embargo tu disco duro sólo tiene 120.000.000.000 bytes. Imagina que compras un módulo de memoria de un “giga” que solo tuviera 1.000.000.000 bytes. Pues es lo mismo.

¿Qué está pasando aquí?, te preguntas. La respuesta es fácil: los fabricantes de discos duros han decidido por su cuenta y riesgo que 1 KB son 1000 bytes. Y que 1 MB son 1000 KB. Y ellos te venden un disco duro de 120 de “sus gigas”, no de los “gigas” que todos conocemos.

Si uno va a una tienda y compra una cinta métrica de 1 kilómetro (suponiendo que las haya) le venden una tira de tela que mide 1000 metros. No mide 1024 metros. Porque hablamos de metros, no de bytes. Si las cintas métricas se midieran en bytes, de seguro que los tendría. Y para muestra, los módulos de memoria, que también se miden en bytes.

Desde luego que yo me siento no solo insultado, sino también robado. Me están vendiendo algo que no es lo que ofrecen. Porque me están vendiendo un disco duro de 111 Gigabytes como si fuera de 120. Y la pérdida aumenta considerablemente conforme aumentan las capacidades. Los 320 “gigas” comprados son en realidad apenas un poco más de 298. ¡Joder, me han quitado casi 22 “gigas”! Por su cara bonita.

Y esto no sólo ocurre en España, el país de los “pobrecitos habladores”, sino que es algo completamente generalizado a nivel mundial. Se aprovechan de nosotros. Y encima nosotros tragamos como tontos. ¿Has comprado un disco duro recientemente? ¿Sí? Pues hala, otro tonto más al bote. Yo la última compra que hice fue de cincuenta. Y pagué sin rechistar (bueno, pagó mi empresa). Y la próxima será de por lo menos cien unidades. Cien veces tonto y cien veces robado. Y los fabricantes de discos duros partiéndose el culo de risa a nuestra costa.

Pero todavía hay más, al menos en España. Si vas a una tienda y compras un rollo de 5 metros de papel de aluminio que realmente tiene 4,99 el fabricante está cometiendo un delito. Está estipulado en la ley. Los fabricantes de discos duros también la están violando. Te están vendiendo algo de un supuesto tamaño que realmente tiene menos. Y estás pagando por el tamaño total. Delito con todas las palabras de la ley.

Y no se trata de 10 milímetros. Se trata de magnitudes mayores. Y sin embargo nadie hace nada. Bueno, algunos tontos nos dedicamos a patalear, pero con eso nos quedamos. Aunque al menos no tragamos, por lo que quizás seamos menos tontos que los que compran sin rechistar. O más. Porque encima de tragar, dedicamos dos horas a escribir cosas como estas.

Además, los fabricantes no pueden excusarse en que siempre ha sido así en los discos duros. Hace unos años los tamaños eran los reales, no como ahora. Simplemente se juntaron y decidieron cambiar las normas unilateralmente. Y creo que eso también es delito. Y nosotros sentados en nuestra silla, felizmente ignorantes de que nos roban nuestra energía (el dinero es trabajo, que al final es un gasto de energía), mientras que ellos se van al Caribe con la modelo de turno con el dinero extra que nos han sacado.

Puntuación: 4.80 / Votos: 5

2 pensamientos en “bytes perdidos

  1. manuel

    mmm, creo que antes de escribir chorradas deberias aprender un poco de informatica, lo que ocurre con los discos duros es la equivalencia entre bytes metricos y binarios, 120gb metricos es igual que los 11 gb binarios que mencionas… debes usar el factor de conversion

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *