Cookie di statistica e di pubblicità
Usiamo cookie di statistica e di pubblicità, entrambi inviati a Google. Rifiutare non cambia niente di quello che vedi.Leggi la pagina sulla privacy
1 B = 9,53674316406e-7 MiB
Scrivi un valore e la conversione da byte a mebibyte si aggiorna mentre digiti. Il fattore è esattamente 9,53674316406e-7: è quello che corrisponde in MiB a 1 B. Il calcolo si fa sul tuo dispositivo; dopo il caricamento questa pagina non interroga più nessun server.
5000000 B is 4,768 MiB
— una foto fatta con il telefono.
1024 B is 0,0009766 MiB
— un kibibyte, che è dove comincia la confusione.
734000000 B is 700 MiB
— un CD audio, da cui viene la cifra.
8389000 B is 8 MiB
— un blocco di memoria come quello che riserva un programma.
| B | MiB |
|---|---|
| 10000 | 0,00953674316406 |
| 20000 | 0,0190734863281 |
| 50000 | 0,0476837158203 |
| 100000 | 0,0953674316406 |
| 500000 | 0,476837158203 |
| 1000000 | 0,953674316406 |
| 5000000 | 4,76837158203 |
| 10000000 | 9,53674316406 |
Convertire B in MiB
Un byte è otto bit, cosa che non è sempre stata scontata: i primi calcolatori ne usarono sei, sette o nove. L’otto si è imposto perché ci sta dentro un carattere e perché la cifra si divide in metà pulite.
Un mebibyte è 1.024 kibibyte, cioè 1.048.576 byte. Gli strumenti di Linux e le cifre della memoria si riferiscono quasi sempre a questo, anche quando scrivono «MB».
In questa direzione il conto è una divisione, e per un numero intero: 1.048.576 di queste stanno in un mebibyte senza avanzo. L'unica scomodità è che i risultati escono in frazioni — un terzo, un dodicesimo — invece delle cifre tonde che dà la direzione opposta.
Non si perde comunque nulla, perché la divisione è esatta. Se il risultato non sta fermo in decimali — 0,0833… e parenti —, quella è la frazione che traspare, non un errore che si insinua.
Un MiB è 1.024 dell'unità sotto; un MB è 1.000. Su questa pagina è la differenza tra 1048576 B e 1000000 B — il 4,9 % — e la distanza cresce a ogni gradino: per questo è un arrotondamento trascurabile su una foto e un pezzo visibile di un disco fisso.
Il mistero dello spazio che manca sta tutto qui. Un disco venduto come un terabyte contiene esattamente quello che dichiara in unità decimali, ed è Windows a ricontarlo in unità binarie tenendo però il nome decimale: il numero si accorcia senza che si sia perso niente. macOS conta questi valori in unità decimali fin dalla 10.6, ed è per questo che lo stesso disco può sembrare di due dimensioni diverse su due computer.
Il contatore in byte è il numero affidabile in questo scambio. Esce da una chiamata al filesystem o da un’intestazione content-length, non ha ambiguità di unità, ed è ciò con cui il software confronterà davvero il file. La cifra in MiB è una comodità per l’occhio umano costruita sopra, e ogni problema in questa direzione nasce dal trattare la comodità come fonte di verità.
Conviene quindi fare la conversione nell’ordine che tiene il contatore in byte come autorità: dividi per 1.048.576, decidi come arrotondare, poi moltiplica indietro per confermare che il limite scritto ammette ancora il file misurato. Quest’ultimo passo richiede pochi secondi e intercetta l’intera classe di errori per cui esiste questa pagina.
Un file di 10.486.000 byte è 10,0002 MiB. Scritto in un tetto di upload come «10m» è ora più grande del limite e verrà rifiutato, e il messaggio di errore dirà che il file è troppo grande per un limite che l’operatore credeva esattamente della sua dimensione. Arrotondare per difetto è l’abitudine predefinita, ed è sempre sbagliata per un tetto massimo.
Il caso speculare è una riserva anziché un tetto. Lo spazio messo da parte per una cache o un file preallocato deve arrotondare per difetto, perché arrotondare per eccesso promette una capacità che non c’è, e la carenza si presenta più tardi, sotto carico, come un errore di scrittura.
Molte configurazioni accettano un suffisso, e il suffisso raramente dice a quale sistema appartiene. Alcuni programmi leggono k come 1.024 e m come 1.048.576; altri leggono la stessa lettera come mille o un milione. Uno strumento come dd separa la questione esplicitamente: bs=1M è 1.048.576 mentre bs=1MB è 1.000.000, e i due producono file diversi dallo stesso comando.
Kubernetes è il caso da cui vale la pena imparare, perché rifiuta di indovinare: Mi, Gi e Ti sono le quantità binarie, M, G e T quelle decimali, entrambe valide in un manifesto, e un limite di memoria di 512M è più piccolo di uno di 512Mi. Niente avvisa: il manifesto viene applicato, il pod parte, e il limite non è dove doveva essere.
Un mebibyte è 2 alla ventesima potenza, ed è per questo che compare come dimensione naturale per ciò che un kernel alloca. Le pagine di memoria sono 4 KiB, le huge page sono spesso 2 MiB, e un buffer dimensionato a una potenza di due si allinea con tutte loro senza lasciare resto alla fine.
La conseguenza pratica è che i valori dimensionati in binario si propagano puliti: se la dimensione di blocco è una potenza di due, e la dimensione di parte è multipla del blocco, e il limite è multiplo della parte, tutto si divide esattamente e nessuno stadio lascia un resto.
Caricare un oggetto grande a parti è dove questi numeri smettono di essere cosmetici. Una dimensione di parte scelta in unità binarie divide un file in un numero intero di parti piene più un resto, e il numero di parti è limitato, quindi la dimensione di parte deve essere abbastanza grande da far stare l’oggetto entro quel tetto.
Il controllo è aritmetico e vale la pena farlo prima del trasferimento, non durante. Dividi la dimensione esatta dell’oggetto in byte per la dimensione di parte in byte, arrotonda per eccesso, e conferma che il risultato sta entro il limite del fornitore.
Mostrare 10,5 MiB va bene. Salvare 10,5 MiB e in seguito ricostruire il contatore di byte no, perché la visualizzazione ha già scartato tutto ciò che sta sotto circa mille byte e non c’è modo di recuperarlo. Manifesti, elenchi di checksum e registri di controllo dovrebbero portare il contatore di byte e derivare la cifra leggibile solo al momento della visualizzazione.
La stessa regola vale per i confronti. Due oggetti entrambi mostrati come 4,2 MiB possono differire di cinquantamila byte, e un controllo di deduplicazione scritto contro il valore mostrato li dichiarerà identici.
L’errore più costoso disponibile su questa pagina non è il 4,9 per cento tra MB e MiB, è il fattore otto tra byte e bit. Lo spazio di archiviazione si conta in byte; la velocità di trasferimento si dichiara in bit al secondo, ed è per questo che un collegamento a 100 Mbit/s consegna al massimo 12,5 MB/s.
La convenzione che li distingue è una B maiuscola per i byte e una b minuscola per i bit, seguita abbastanza spesso da potersi fidare e violata abbastanza spesso da doverla controllare. Quando una cifra sembra otto volte più grande o più piccola del previsto, è la prima cosa da verificare.
1 B fa 9,53674316406e-7 MiB. Il valore è esatto e non arrotondato: l’equivalenza fra byte e mebibyte è fissata per definizione.
No. Il calcolo avviene nel tuo browser. Puoi staccare la connessione e continuare a calcolare, che fra l’altro è il modo più semplice di verificarlo.
Perché due unità diverse portano lo stesso nome. I produttori contano 1 GB = 1.000.000.000 byte; Windows mostra gibibyte, cioè 1.073.741.824 byte, ma li chiama «GB». Lo stesso disco sembra così più piccolo del sette per cento. Non è sparito niente.
Un MiB è 1048580 B. È la stessa relazione letta al rovescio, quindi un risultato di una pagina fatto passare per l’altra deve tornare da dove è partito.
Quello che questa pagina afferma su unità di informazione si può verificare, e questi sono i documenti che chiudono la questione.
Il fattore è una costante nella pagina e il conto sono quattro operazioni, quindi non si invia niente da nessuna parte e niente ha bisogno di essere inviato. Il numero che scrivi non esce dal browser — non esiste una richiesta su cui potrebbe viaggiare.