No falta nada
Conecte una unidad etiquetada como "1 TB" y la mayoría de los sistemas operativos informan aproximadamente 931 GB. En realidad, no ha desaparecido ninguna capacidad. La unidad contiene exactamente lo que indica la etiqueta, y los 69 GB "faltantes" son enteramente un artefacto de aplicar dos definiciones diferentes de los prefijos kilo-, mega-, giga- y tera- al mismo recuento físico de bytes.
Dos sistemas de prefijos, los mismos nombres, significados diferentes
| Decimal (estilo SI) | Valor | Binario (IEC) | Valor |
|---|---|---|---|
| kilobyte (kB) | 1.000 bytes (103) | kibibyte (KiB) | 1.024 bytes (210) |
| megabyte (MB) | 1.000.000 bytes (106) | mebibyte (MiB) | 1.048.576 bytes (220) |
| gigabyte (GB) | 1.000.000.000 bytes (109) | gibibyte (GiB) | 1.073.741.824 bytes (230) |
| terabyte (TB) | 1.000.000.000.000 bytes (1012) | tebibyte (TiB) | 1.099.511.627.776 bytes (240) |
Los fabricantes de almacenamiento utilizan la columna decimal, y lo han hecho desde mucho antes de que la distinción tuviera nombres separados, porque hace que la capacidad anunciada sea una cifra redonda y coincide con el modo en que todas las demás industrias usan "kilo" y "mega". Una unidad etiquetada como 1 TB contiene realmente 1.000.000.000.000 bytes.
La aritmética exacta
Los sistemas operativos que calculan "GB" mediante división binaria, que sigue siendo el comportamiento predeterminado del Explorador de archivos de Windows, toman el recuento real de bytes de la unidad y lo dividen entre potencias de 1.024, mientras continúan mostrando la etiqueta "GB" en lugar de la correcta "GiB":
1×1012 bytes ÷ 230 bytes/GiB = 1.000.000.000.000 ÷ 1.073.741.824 = 931,32… GiB
Ese número, 931,32, es lo que muestra un sistema operativo que divide en binario, etiquetado erróneamente como "GB". No se perdió nada por el formateo ni por la sobrecarga. Son los mismos 1.000.000.000.000 bytes, divididos por un divisor mayor que el utilizado por el fabricante y con un nombre de unidad incorrecto para el resultado.
De dónde surgió el sistema de dos nombres
La ambigüedad es antigua. "Kilobyte" se utilizaba de forma imprecisa tanto para 1.000 como para 1.024 bytes desde los primeros días de la informática, porque 210 (1.024) se aproxima lo suficiente a 103 (1.000) como para que la imprecisión rara vez importara a pequeña escala. Dejó de ser inocua cuando las capacidades alcanzaron el rango de los gigabytes, donde las dos definiciones divergen un 7,4%, y el rango de los terabytes, donde divergen casi un 10%. En diciembre de 1998, la Comisión Electrotécnica Internacional aprobó la Enmienda 2 a IEC 60027-2, introduciendo los prefijos binarios kibi-, mebi-, gibi- y tebi- específicamente para acabar con la ambigüedad al dar a las cantidades binarias sus propios nombres inequívocos, dejando kilo-, mega- y giga- para significar estrictamente potencias de 1.000, como ocurre en cualquier otro ámbito de la metrología. Posteriormente, esa norma se incorporó a IEC 80000-13 (2008), la parte del Sistema Internacional de Magnitudes que abarca la ciencia y la tecnología de la información, que sigue siendo la autoridad vigente para ambos conjuntos de prefijos.
La adopción era opcional, y se nota
Los organismos de normalización pueden definir los nombres correctos; no pueden obligar a los sistemas operativos a utilizarlos. Apple cambió macOS a la presentación basada en decimales con Mac OS X 10.6 "Snow Leopard" en 2009 — una unidad de 1 TB aparece como "1 TB" en Finder, coincidiendo con la etiqueta del fabricante, porque Finder ahora divide entre potencias de 1.000. Windows nunca realizó el cambio equivalente: el Explorador de archivos sigue dividiendo entre potencias de 1.024 mientras muestra la etiqueta "GB", por lo que la misma unidad física muestra un número diferente según el sistema operativo al que se conecte. Linux es inconsistente según la herramienta, no por diseño — muchas utilidades de línea de comandos, entre ellas ls -lh y du -h sin la opción --si, dividen en binario de forma predeterminada, mientras que varios gestores de archivos de escritorio usan el sistema decimal de forma predeterminada, correctamente etiquetado.
La RAM es el único caso en que lo binario no es solo una cuestión de etiquetado
La capacidad de almacenamiento es una decisión de fabricación; en principio, un controlador de unidad podría construirse para exponer cualquier recuento de bytes. La capacidad de RAM no lo es: los chips de memoria se direccionan físicamente con líneas de dirección binarias, por lo que la capacidad de un chip es arquitectónicamente una potencia de dos. Un módulo de RAM de "8 GB" contiene realmente 8 × 1.073.741.824 = 8.589.934.592 bytes, 8 GiB según el nombre correcto, mientras que una unidad flash de "8 GB" contiene 8 × 1.000.000.000 = 8.000.000.000 bytes. La misma etiqueta impresa, dos cantidades físicas diferentes, por dos razones subyacentes diferentes: una es una restricción de hardware, la otra es una convención de unidades elegida por un fabricante.
Bits, no bytes, para la velocidad de red
Junto a esta hay otra trampa de prefijos: las velocidades de red se expresan en bits por segundo, los tamaños de archivo en bytes. Dado que un byte son 8 bits, una conexión anunciada de 1 Gbps alcanza un máximo de alrededor de 125 MB/s de transferencia de archivos antes de la sobrecarga de protocolo, no 1.000 MB/s ni 1 GB/s. Dividir por 8 la velocidad de enlace anunciada para estimar el rendimiento real de transferencia de archivos resuelve la mayor parte de la confusión entre "la conexión es rápida" y "la descarga parece lenta".
El único formato que no utilizó ninguna definición de forma coherente
El disquete de 3,5 pulgadas "1,44 MB" es el caso atípico, y es un caso realmente instructivo en vez de una nota al pie. Su capacidad formateada real es de 1.474.560 bytes. Ese número no es 1,44 × 1.000.000 (1.440.000, la lectura decimal) y no es 1,44 × 1.048.576 (1.509.949, la lectura binaria). Es 1,44 × 1.024 × 1.000: un híbrido en el que "kilo" se interpreta como el 1.024 binario, coincidiendo con el modo en que se direccionan realmente la memoria y los sectores de disco, pero "mega" se interpreta después como un múltiplo decimal de 1.000 de ese kilobyte ya binario. Ni la convención binaria IEC ni la convención decimal simple del SI lo describen; el formato es anterior tanto al esfuerzo de normalización de 1998 como a la presión comercial que vino con las unidades de varios gigabytes, y se distribuyó con una definición de unidad que no satisfacía a nadie en particular.
Una forma rápida de comprobar la cordura de cualquier tamaño anunciado
Si se utiliza un número para describir una capacidad de hardware que se puede contar físicamente en unidades binarias, como la RAM o el tamaño de una matriz de chip flash, espere que sea una potencia de dos exacta y, por tanto, idéntica independientemente del sistema de prefijos utilizado. Si describe algo fabricado o aprovisionado para un objetivo decimal redondo, unidades de almacenamiento, niveles de almacenamiento en la nube, asignaciones de ancho de banda, espere que el porcentaje "faltante" aparezca en el momento en que un sistema operativo lo informe en unidades mal etiquetadas divididas en binario.