Los prefijos confusos para múltiplos binarios

viernes 17 junio 2011 | In English

Expresar tamaños en informática puede ser confuso a veces, esto es debido a la falta de estandarización entre fabricantes de hardware, programas y sistemas operativos en lo referente al uso de prefijos (K, M, G) al expresar múltiplos binarios. Un estándar existe, de esto trata el ISO/IEC 80000-13:2008, define un estándar para el uso de prefijos para múltiplos binarios, sin embargo, al momento de escribir esta publicación no ha sido ampliamente adoptado.

Esta confusión se origina de los comienzos de la informática. En computación, la unidad más básica de información es el bit, que puede verse como un interruptor, solo tiene dos estados, encendido y apagado (1 y 0). Debido a que solo se puede guardar un estado (encendido o apagado) en un bit, una unidad más grande fue creada, el byte, que es solo un grupo de bits. Un byte consiste de 8 bits, y esto nos permite representar un valor, de 0 a 255.

El SI (Sistema Internacional de Unidades) define que el prefijo K (Kilo) denota 1000, y M (Mega) representa 1000×1000, esto esta basado en nuestro sistema numérico de base 10. Originalmente 1 kilobyte quería decir 1000 bytes (103) y no había ninguna confusión. Sin embargo, en el mundo de la computación, debido a que todo está basado en el bit, el sistema numérico en uso es en base 2. La gente notó la conveniencia de denotar 1 kilobyte como 1024 bytes (210), y un megabyte como 1024×1024 (220); en lugar de la equivalencia SI de Kilo y Mega que denotan 1KB como 103 bytes, y 1MB 106 bytes.

Esto originó la confusión. En los primeros días, la gente trabajando en computación era altamente educada y los fabricantes de computadoras especificaban la capacidad de sus productos con precisión completa. Dentro de los círculos de la computación todos comenzaron a usar 1KB como 1024 bytes. Pero conforme la capacidad de almacenamiento y de la memoria en general creció, la capacidad comenzó a ser expresada con prefijos. Los fabricantes de hardware comenzaron a expresar sus capacidades usando unidades del SI, y los programas reportaban la capacidad en los prefijos personalizados en base-2. Un fabricante especificaría una capacidad de 800MB basado en la equivalencia de 1MB = 1000×1000, y el tamaño sería reportado por programas como 763MB ya que estaban usando la equivalencia personalizada de 1MB = 1024×1024.

En estos días, existe un estándar, nuevos prefijos fueron creados para representar los múltiplos binarios, dejando los prefijos del SI para representar los múltiplos decimales. Los nuevos prefijos (si, suenan graciosos) son el Kibi (Ki) para 210, Mebi (Mi) para 220, Gibi (Gi) para 230, etc. Mientras que aún no estás ampliamente adoptados, probablemente ya has visto KiB, MiB y GiBi.

Los nuevos prefijos para múltiplos binarios
Nombre Símbolo Base 2 Base 10 Valor en precisión completa
Kibi Ki 210 ≈1.02×103 1,024
Mebi Mi 220 ≈1.05×106 1,048,576
Gibi Gi 230 ≈1.07×109 1,073,741,824
Tebi Ti 240 ≈1.10×1012 1,099,511,627,776
Peti Pi 250 ≈1.13×1015 1,125,899,906,842,624
Exbi Ei 260 ≈1.15×1018 1,152,921,504,606,846,976
Zebi Zi 270 ≈1.18×1021 1,180,591,620,717,411,303,424
Yobi Yi 280 ≈1.21×1024 1,208,925,819,614,629,174,706,176

Al momento de esta publicación, esto es como están las cosas:

Esto usa los prefijos de SI, donde 1KB = 103 y 1MB = 106.

  • La capacidad de los discos duros.
  • La capacidad de la memoria flash.
  • La capacidad de los DVDs.
  • Mac OSX
  • fdisk
  • cfdisk
  • apt-get

Esto usa los prefijos personalizados, donde 1KB = 210 y 1MB = 220

  • La capacidad de la memoria RAM
  • La capacidad de la memoria cache
  • La capacidad de los CDs
  • Windows
  • ls
  • df
  • Casi cada sitio web, reporte y publicación.

Esto usa el nuevo estándar de ISO/IEC, donde 1KiB = 210 y 1MiB = 220

  • Linux (aunque muchas utilidades aún usan los prefijos personalizados)
  • gparted
  • ifconfig
  • pidgin
  • thepiratebay.org
  • arstechnica.com
  • El gobierno de Inglaterra
  • jveweb.net

Si, es un caos, desafortunadamente los nuevos estándares pueden tardar muchos años en ser adoptados por la industria y el campo. En lo que concierne a este sitio web y cualquier proyecto que haga en el futuro, estaré utilizando este estándar (ISO/IEC 80000-13:2008) para expresar prefijos en base 2, con la meta de evitar confusión en mis publicaciones. Revisaré todas las publicaciones anteriores a la publicación de esta publicación, pero probablemente para el momento en que esta publicación sea indexado por los motores de búsqueda ya habré terminado.

Categorías: FOSS