Unità di misura informatiche

metQualche giorno fa, durante il corso di Elementi di informatica della mia università, sono state spiegate le unità di misura utilizzate per i dati. Durante questa spiegazione sono stati commessi numerosi errori riguardanti sia i simboli utilizzati per le unità di misura, che i valori corrispondenti.

Tutti sanno che il Byte rappresenta un insieme di 8 bit (almeno nella maggior parte dei sistemi), ma quanto vale un kilobyte? E un kibibyte? E un kilobit?

In giro c’è molta confusione a riguardo, anche per il fatto che i sistemi operativi Windows utilizzano un valore del kilobyte attualmente considerato errato.

In questo articolo cercherò di chiarire tutti i dubbi, facendo riferimento alla documentazione ufficiale.

Innazitutto, ecco i link da cui potete scaricare il documento ufficiale del Sistema Internazionale:
The International System of Units (SI)
Link esterno

Il Sistema Internazionale è il più diffuso sistema di unità di misura al mondo. Esso definisce sette grandezze fondamentali con le rispettive unità di misura, le grandezze derivate, e i prefissi da aggiungere a queste per generare i rispettivi multipli e sottomultipli.

Perché utilizzare il Sistema Internazionale?
Oggigiorno, in un mondo dove la comunità scientifica ha subito una tale globalizzazione, se ogni stato avesse una sua unità di misura per ogni grandezza, l’interscambio culturale (fondamentale per il progresso scientifico) sarebbe molto complesso. Pensate se durante una conferenza ognuno utilizzasse la propria unità di misura per il metro, chi il piede, la iarda, il pollice, la spanna o la pertica. Sarebbe impossibile comprendersi.
Il Sistema Internazionale invece semplifica tantissimo lo scambio di informazioni, definendo una volta e per tutte le unità di misura.

Attualmente il Sistema Internazionale è il sistema di unità di misura più diffuso al mondo, ed è quello a cui fa riferimento la comunità scientifica.

Tornando all’informatica, quasi tutti sanno che le informazioni digitali sono interamente basate su una successione di “bit”, che è l’unità minima di un’informazione che un calcolatore può riconoscere e ci fornisce due sole informazioni: AccesoSpento, On-Off, AB, 01, o come vi pare. Due bit sono però in grado di fornirci quattro informazioni e con tre bit possiamo fornire ben otto informazioni. In generale, per un numero n di bit, possiamo rappresentare 2n informazioni.
Ogni informazione (lettere, numeri o caratteri speciali) che si vuole convertire in formato digitale, deve essere trascritta come sequenza di bit. Un bit non basta per rappresentare tutti i caratteri (che, contando lettere minuscole, maiuscole, numeri e caratteri speciali, sono più di 200), ma sono necessari ben 8 bit, grazie ai quali è possibile rappresentare 256 informazioni.
Questi 8 bit prendono il nome di byte, e rappresentano un carattere. Nella seguente tabella potete osservare alcuni dei 255 caratteri con i rispettivi byte che li rappresentano:

ascii1

Ecco un primo chiarimento da fare per quanto riguarda le unità di misura: il  bit viene indicato con la lettera b minuscola, mentre il Byte viene indicato con la B maiuscola.
b = bit
B = Byte

Fin qui, non vi è alcun dubbio. I problemi nascono nel momento in cui si cerca di rappresentare i multipli di queste due unità di misura. Prendiamo ad esempio il Byte. Quanto vale un kilobyte?
Notiamo che un kilometro vale mille metri, un kilogrammo vale mille grammi, un kilojoule vale mille joule, e così via. Un kilobyte dovrebbe valere mille byte, e invece per molto tempo si è considerato il kilobyte come 1024 byte. Perché?
Il motivo è che il byte è un’unità di misura che deriva dal bit, e le informazioni in bit sono indicate (come già detto) come potenze in base 2. Dato che 210=1024, che è abbastanza vicino al 1000, per anni si è considerato il kilobyte come 1024 byte.

Attualmente, questa equivalenza è errata.

Infatti, alla pagina 23 del documento del Sistema Internazionale che ho linkato sopra, è possibile leggere una tabella esplicativa sui prefissi relativi a multipli e sottomultipli. Tutti i prefissi rappresentano dei multipli decimali.
Il prefisso “kilo”, la cui origine etimologica è greca(da ??????, “khilioi”), sta ad indicare appunto mille (103), e il simbolo è una k minuscola.

si

Inoltre, nella nota in alto a destra, è scritto:

“These SI prefixes refer strictly to powers of 10.
They should not be used to indicate powers of 2 (for example, one kilobit represents 1000 bits and not 1024 bits).”

Quindi, nel Sistema Internazionale, è esplicitamente vietato utilizzare kilobit (e kilobyte) come potenza in base due di bit (e byte), cioè 1024.

Purtroppo, quando è stata effettuata questa rettifica nel Sistema Internazionale, la maggior parte dei computer utilizzavano già il kB di 1024B come unità di misura.
Per questo motivo è stata costituita un’ulteriore unità di misura, che è il kibibyte (il simbolo è KiB), il cui prefisso “kibi” sta per Kilobinary, cioè “Mille, considerato come potenza in base 2”.
Anche se questa unità di misura non è ancora molto diffusa (nonostante sia attualmente utilizzata nei sistemi operativi Unix), è l’unica unità di misura corretta quando si considerano 1024B.

Il kibibyte, come il kilobyte, ha i suoi multipli e sottomultipli, come potete vedere nella seguente tabella di Wikipedia:

kiby

Un’altro errore grossolano che viene spesso commesso nell’utilizzare queste unità di misura informatiche, è quello di utilizzare indistintamente kb e kB (e allo stesso modo Mb e MB).
Come ho già detto prima, la b minuscola indica il bit, mentre la B maiuscola indica il Byte. Il prefisso M sta per milione, quindi:
1 MB = 1 milione di Byte
1 Mb = 1 milione di bit

Molti spesso si lamentano che la velocità della loro adsl (espressa in megabit) sia di gran lunga inferiore rispetto a quanto dichiarato. Il più delle volte queste considerazioni derivano proprio dall’errore di intendere 20 Mb come 20 MB. Dato che 1 Byte è 8 bit, ovviamente 1 bit sarà 0,125 Byte e quindi l’equivalenza è:
20 Mb = 2,5 MB
Cioè 20:8.

Bisogna inoltre notare che, le unità di misura del Sistema Internazionale, sono case sensitive e quindi le lettere minuscole sono considerate diverse da quelle maiuscole.
Infatti:
M = un milione
m = un millesimo
Quindi anche parlare di mB come se fossero MB, è un errore, dato che mB rappresenta un millesimo di un byte.
Lo stesso vale per la k di kilo, che deve essere minuscola per non confonderla con la K maiuscola che rappresenta la temperatura in Kelvin.
In generale, da Mega in poi i simboli sono tutti maiuscoli, prima sono tutti minuscoli.

Infine, ecco una serie di link per approfondire l’argomento:
http://en.wikipedia.org/wiki/Binary_prefix
http://en.wikipedia.org/wiki/Timeline_of_binary_prefixes
http://en.wikipedia.org/wiki/Bit