Come funziona
Le unità di archiviazione si contano in due modi diversi ed entrambi sono corretti. Il sistema decimale, quello usato dai produttori di dischi e dal Sistema Internazionale, moltiplica per 1000 a ogni prefisso: un kB sono 1000 byte, un MB un milione e un TB mille miliardi. Il sistema binario, nato con i computer, moltiplica per 1024, perché memoria e bus vengono indirizzati in potenze di due.
Il problema è che per decenni i due sistemi hanno usato gli stessi nomi. Quando Esplora file di Windows scrive "GB" in realtà sta calcolando gibibyte, cioè sta dividendo per 1024 tre volte. Per questo un disco da 1 TB, che contiene esattamente mille miliardi di byte, appare sullo schermo come 931,32 GB: non manca nulla, è cambiato solo il metro con cui si conta. Dal 1998 la norma IEC 80000-13 risolve l'ambiguità con i prefissi binari KiB, MiB, GiB e TiB.
Questo strumento converte una capacità nelle tre famiglie contemporaneamente —decimale, binaria e bit— e mostra la quantità esatta di byte, la cifra dichiarata dal produttore e quella che mostrerà il sistema operativo, con la percentuale di differenza tra le due. Tutto il calcolo avviene nel browser.
Esempi
1 TB931,32 GBIl disco contiene 1.000.000.000.000 di byte, esattamente ciò che promette la scatola. Il sistema li divide tre volte per 1024 e mostra 931,32 GB, che a rigore sono 931,32 GiB. Sullo schermo sembrano mancare quasi 69 GB; sul disco non manca un solo byte.1 GiB1073741824 BUn gibibyte sono 2^30 byte. Un gigabyte decimale sono 1.000.000.000, quindi quello binario è più grande del 7,37 %. È la stessa differenza che separa ciò che intendi quando chiedi "un giga" da ciò che capisce ogni programma.4 TB3,64 TiBPiù grande è il prefisso, più i due sistemi si allontanano: 2,34 % nei kilo, 6,87 % nei giga e 9,05 % nei tera. Per questo la sensazione di "disco piccolo" peggiora proprio con i dischi grandi.100 Mbit12,5 MBI collegamenti di rete si misurano in bit e l'archiviazione in byte. Un collegamento da 100 Mbit/s scarica al massimo 12,5 MB al secondo, perché ogni byte sono 8 bit. Questo conto spiega metà dei reclami rivolti agli operatori internet.Casi d'uso
- Capire perché un disco da 1 TB o una chiavetta USB da 64 GB mostrano meno capacità di quella dichiarata sulla confezione.
- Tradurre in qualcosa di leggibile la dimensione in byte restituita da un'API, da un log o dal comando ls -l.
- Confrontare la dimensione di un backup o di un'immagine tra due strumenti che misurano con metri diversi.
- Dimensionare quote, volumi o limiti di caricamento quando la documentazione parla in MiB e l'interfaccia in MB.
- Convertire la velocità di un collegamento in Mbit/s nella velocità di download reale in MB/s.
- Spiegare a un cliente, con i numeri, che il disco che ha comprato non ha meno spazio di quanto promesso.
Domande frequenti
Ho comprato un disco da 1 TB e vedo 931 GB, mi hanno truffato?
No. Il disco ha 1.000.000.000.000 di byte, che è ciò che significa 1 TB nel sistema decimale usato da tutti i produttori. Windows prende quegli stessi byte e li divide per 1024 tre volte, ottenendo 931,32, ma etichetta il risultato come "GB" invece che "GiB". È un problema di targhetta, non di capacità: i byte ci sono tutti. Ciò che si perde davvero, e a parte, è quello che il file system riserva quando formatta.
Qual è la differenza tra GB e GiB?
Un GB sono 1.000.000.000 di byte (10^9) e un GiB sono 1.073.741.824 (2^30). Il gibibyte è più grande del 7,37 %. Lo stesso rapporto si ripete a ogni livello: kB contro KiB, MB contro MiB, TB contro TiB. I simboli binari hanno una "i" nel mezzo e si pronunciano kibi, mebi, gibi e tebi.
Tutti i sistemi operativi mostrano lo stesso valore?
No, e questo aggiunge confusione. Windows calcola in potenze di 1024 ma etichetta GB e TB, quindi mostra 931 GB per un disco da 1 TB. macOS misura in decimale dal 2009, perciò lo stesso disco appare come 1 TB. Su Linux dipende dallo strumento: df -h e ls -lh usano 1024, df -H e ls -l --si usano 1000, e molte utility scrivono già GiB quando è corretto. Il disco non è mai cambiato; è cambiato chi lo misura.
Perché la memoria RAM invece coincide con quanto dichiarato sulla scatola?
Perché la memoria viene prodotta e indirizzata in potenze di due: un modulo da "16 GB" ha in realtà 16 GiB, cioè 17.179.869.184 byte. Poiché anche il sistema operativo conta in binario, i due numeri coincidono e nessuno nota nulla. Con i dischi accade il contrario: il produttore conta in decimale e il sistema in binario, e la differenza salta all'occhio.
Di quanto cresce la differenza a seconda del prefisso?
Si accumula del 2,4 % per livello. Il numero mostrato dal sistema risulta più piccolo del 2,34 % nei kilo, 4,63 % nei mega, 6,87 % nei giga, 9,05 % nei tera, 11,18 % nei peta e 13,26 % negli exa. Per questo in un file di pochi kB la differenza è impercettibile, mentre in un array da diversi petabyte rappresenta centinaia di terabyte di aspettativa.
Un Mbit è la stessa cosa di un MB?
No, e la differenza è di otto volte. I collegamenti di rete si misurano in bit al secondo e l'archiviazione in byte, e un byte sono 8 bit. Un collegamento da 300 Mbit/s consegna al massimo 37,5 MB/s in download, prima ancora di scalare gli header dei protocolli. In più i prefissi di rete sono sempre decimali: un Mbit è un milione di bit, mai 1.048.576.
Perché al mio SSD manca ancora più spazio?
Alla differenza tra decimale e binario si sommano due cose. La prima è l'over-provisioning: il controller si riserva una porzione della memoria flash, non utilizzabile, per sostituire i blocchi usurati e accelerare la scrittura. La seconda è il file system, che consuma spazio in tabelle, journal e metadati appena si formatta. Nessuna delle due è un difetto: sono il prezzo perché l'unità duri e funzioni.
Quindi quale unità conviene usare quando si scrive documentazione?
Quella che non lascia dubbi. Se il valore è calcolato con potenze di 1024, scrivi MiB o GiB; se è calcolato con potenze di 1000, scrivi MB o GB. In un'API o in un file di configurazione la cosa più sicura è esporre direttamente la quantità di byte e lasciare che sia l'interfaccia a decidere come mostrarla. È una riga di codice che evita ore di discussione sul perché due strumenti riportano cifre diverse per lo stesso file.