Convertitore di dimensioni dati
Converte una dimensione in unità decimali e binarie — KB accanto a KiB, MB accanto a MiB — con i bit, il conteggio esatto dei byte e ciò che mostra ogni SO.
1,000,000,000,000B1,000,000,000,000KB1,000,000,000MB1,000,000GB1,000TB1
KiB976,562,500MiB≈ 953,674.3164GiB≈ 931.3226
bit8,000,000,000,000Kb8,000,000,000Mb8,000,000Gb8,000Tb8
Gli stessi byte, cinque letture. Nessuna sbaglia; discordano sul divisore, sull’etichetta o su entrambi.
- Esplora file di Windows — divide per 1024 e tiene le etichette decimali
931 GB - Finder di macOS — divide per 1000
1 TB - ls -lh, du -h — dividono per 1024
932G - ls --si, du --si — dividono per 1000
1.0T - Produttori di dischi e chiavette USB — dividono per 1000
1 TB
Che cosa fa questo strumento
Scrivi una dimensione in una qualsiasi unità — 1 TB, 1536 MiB, 900 Mb, o semplicemente un numero di byte grezzo copiato da un elenco di file — e torna convertita in entrambi i sistemi di unità nello stesso momento, insieme al conteggio esatto dei byte e al modo in cui ciascuno strumento della tua macchina la mostrerà.
I due sistemi sono affiancati anziché nascosti dietro un interruttore, perché tutta la difficoltà delle dimensioni dei dati sta nel fatto che entrambi sono in uso ed entrambi si chiamano allo stesso modo. Un numero da solo non ti dice quale dei due lo ha prodotto.
Perché un kilobyte ha due significati
I computer indirizzano la memoria in potenze di due, così 1024 è per una macchina un numero tondo naturale come 1000 non sarà mai. Presto «kilo» venne preso in prestito per 1024 perché era abbastanza vicino al migliaio del SI e nessuno si aspettava che i due si allontanassero. Si allontanarono.
L’errore è piccolo in basso e si accumula a ogni gradino. Un kilobyte differisce del 2,4%, un megabyte del 4,9%, un gigabyte del 7,4%, un terabyte del 10%. Al petabyte le due risposte distano il 12,6%, e non è più un dettaglio di arrotondamento:
KB 1,000 KiB 1,024 # 2,4% di differenza MB 1,000,000 MiB 1,048,576 # 4,9% GB 1,000,000,000 GiB 1,073,741,824 # 7,4% TB 1,000,000,000,000 TiB 1,099,511,627,776 # 10,0%
Nel 1998 la IEC diede alle potenze di 1024 nomi propri — kibibyte, mebibyte, gibibyte, e i simboli KiB, MiB, GiB — proprio perché l’ambiguità potesse essere scritta e tolta di mezzo. I nomi non attecchirono nell’uso quotidiano, i simboli sì, e tutto ciò che porta l’etichetta KiB è inequivocabile. Tutto ciò che porta KB continua a non esserlo.
Chi conta in quale modo
La divisione non è casuale. Cade all’incirca sulla linea fra l’hardware che si indirizza e l’hardware che si vende:
- La RAM è sempre binaria. Un modulo di memoria da 16 GB è 16 GiB, perché la memoria si indirizza per righe e colonne binarie e non potrebbe essere un numero decimale tondo nemmeno volendo.
- I dischi sono sempre decimali. Un produttore che vende un disco da 1 TB intende 1.000.000.000.000 di byte, e così è da ben prima che qualcuno se ne lamentasse.
- Windows è binario ma usa le etichette decimali. Divide per 1024 e scrive GB, ed è da lì che viene gran parte della confusione che le persone sperimentano davvero.
- macOS è decimale da Snow Leopard nel 2009. Lo stesso disco che segna 931 GB su Windows segna 1 TB su un Mac, e nessuna delle due macchine è guasta.
- Gli strumenti a riga di comando di Linux danno entrambi: ls -lh e du -h dividono per 1024, e l’opzione --si sugli stessi comandi divide per 1000.
- Le reti sono sempre decimali, e contano bit anziché byte.
Il disco da 1 TB che appare come 931 GB
È di gran lunga la domanda più frequente sulle dimensioni dei dati, e la risposta è che non manca alcuno spazio. Il disco contiene esattamente ciò che diceva la scatola. Solo che Windows divide quei byte per 1024 tre volte invece che per 1000, e poi stampa un’etichetta che dice altro.
1,000,000,000,000 bytes # ciò che ha venduto il produttore / 1024 = 976,562,500 KB # Windows divide una volta / 1024 = 953,674.32 MB # due volte / 1024 = 931.32 GB # tre volte, poi etichetta GB
Il disco non è più piccolo di quanto dichiarato e il sistema operativo non mente sul numero di byte. L’unica cosa sbagliata è l’etichetta: ciò che Windows chiama 931 GB sono in realtà 931 GiB, e 931 GiB sono 1 TB. Incolla una dimensione qualsiasi in questo strumento e le due colonne mostrano quel rapporto direttamente.
Bit e byte, e il fattore otto
Un byte è otto bit, e i due si distinguono per iscritto solo dalla maiuscola di una lettera: una B maiuscola indica i byte, una b minuscola i bit. Mb e MB differiscono di un fattore otto, più che sufficiente a rendere insensato un calcolo.
Conta soprattutto per le velocità di rete, citate in bit al secondo mentre le dimensioni dei file e l’avanzamento dei download vanno in byte. Una connessione da 100 Mb/s sposta al massimo 12,5 MB/s, quindi un file da 1 GB richiede circa 80 secondi e non i 10 che i numeri sembrano promettere. Nulla ti sta frenando; le unità non sono mai state le stesse.
I bit qui sono mostrati solo nel sistema decimale, e non è una semplificazione. Le velocità di rete si definiscono in potenze di dieci, quindi un megabit è un milione di bit ovunque il termine sia usato. La IEC definisce sì unità binarie di bit, ma praticamente nulla le usa, e offrirle inviterebbe a una conversione che nessuno intende.
Perché i numeri qui sono esatti
I numeri di JavaScript tengono gli interi in modo esatto solo fino a circa nove milioni di miliardi — 2^53. Un exabyte è 10^18, ben oltre, così un convertitore costruito sull’aritmetica ordinaria comincia a perdere cifre proprio dove vivono le domande sui grandi archivi, e riporta un numero di byte sicuro di sé e sbagliato nelle ultime cifre.
Qui tutto usa invece interi a precisione arbitraria. Questo porta in più qualcosa di meno ovvio: poiché ogni fattore coinvolto è una potenza di dieci o di due, ed entrambe dividono esattamente qualche potenza di dieci, ogni conversione fra queste unità termina come decimale finito. 1 TB non è circa 931,32 GiB — è 931,322574615478515625 GiB, senza resto. Le righe qui sono arrotondate per la lettura, e il conteggio di byte sopra di esse è la risposta intera.
Domande frequenti
- Un kilobyte è 1000 byte o 1024 byte?
- Entrambi, a seconda di chi conta. Il SI e i produttori di dischi usano 1000; Windows e le dimensioni della RAM usano 1024. La IEC dà alle unità da 1024 un nome proprio — kibibyte, mebibyte, gibibyte — il che elimina l’ambiguità, anche se le etichette vecchie sono ancora ovunque. Questo strumento mostra entrambe le letture insieme invece di sceglierne una.
- Perché il mio disco da 1 TB mostra solo 931 GB?
- Non manca nulla. Il produttore ti ha venduto 1.000.000.000.000 di byte, contati in potenze di 1000. Windows divide quel numero per 1024 tre volte, ottiene 931,32 e poi etichetta il risultato come GB. Stessi byte, divisore diverso, etichetta fuorviante: ciò che ti sta mostrando sono in realtà 931 GiB.
- Qual è la differenza fra MB e MiB?
- Un megabyte è 1.000.000 di byte e un mebibyte 1.048.576 byte, quindi il MiB è più grande di circa il 4,9%. Il MiB è inequivocabile per definizione; il MB lo è solo se sai quale convenzione segue lo strumento che lo ha stampato.
- Perché il mio download è più lento della velocità della connessione?
- Di solito perché i due si misurano in unità diverse. Le velocità di connessione si citano in megabit al secondo e i download in megabyte al secondo, e in un byte ci sono otto bit. Una linea da 100 Mb/s arriva al massimo a circa 12,5 MB/s.
- Che cosa significa davvero un limite di caricamento o di spazio di 25 MB?
- Dipende dal servizio, e l’ipotesi prudente è il numero più piccolo. Se il limite è applicato come 25 × 1.000.000 di byte, un file appena sotto i 25 MiB verrà rifiutato. Convertire la dimensione del file nelle due colonne mostra subito se supera entrambe le letture.
- Gestisce dimensioni molto grandi?
- Sì. L’aritmetica usa interi a precisione arbitraria, quindi exabyte, zettabyte e yottabyte si convertono esattamente invece di perdere le ultime cifre come fanno i numeri in virgola mobile oltre 2^53.
- Qualcosa di ciò che scrivo viene inviato a un server?
- No. È aritmetica nel tuo browser; nulla viene caricato o registrato, e funziona senza connessione di rete.