La codifica binaria è alla base del funzionamento di tutti i computer. Tutte le informazioni relative ai computer sono create infatti dalla combinazione dei due numeri 1 e 0.
Verso la fine degli anni '30, Claude Shannon ha dimostrato che con l'aiuto di interruttori chiusi per «vero» e aperti per «falso» era possibile effettuare delle operazioni logiche associando il numero 1 per «vero» e 0 per «falso». Questa codifica dell'informazione è detta base binaria. Essa consiste nell'utilizzare due stati (rappresentati dalle cifre 0 e 1) per codificare le informazioni.
Dal 2000 a.C. l'uomo calcola con 10 cifre (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), parlando quindi di base decimale. Tuttavia nelle civiltà più antiche o per alcune applicazioni attuali sono state utilizzate, e lo sono ancora, delle altre basi di calcolo:
Base sessagesimale (60), utilizzata dai Sumeri. Questa base è ugualmente utilizzata nel sistema orario attuale, per i minuti e i secondi;
Base vigesimale (20), utilizzato dai Maya;
Base duodecimale (12), utilizzato dagli anglosassoni nei loro sistemi monetari fino al 1960. Un pound rappresentava venti «scellini» e uno «scellino» rappresentava dodici «pences». Il sistema orario attuale funziona anche su dodici ore (soprattutto nella notazione anglosassone);
Base quinaria (5), utilizzata dai Maya;
Base binaria (2), utilizzata dall'insieme delle tecnologie digitali.
Il termine bit (b con una minuscola della notazione) significa binary digit, cioè 0 o 1 in numerazione binaria. Si tratta della più piccola unità d'informazione manipolabile da un terminale digitale. È possibile rappresentare fisicamente questa informazione binaria: con un segnale elettrico o magnetico, che, oltre una certa soglia, corrisponde al valore 1; con delle asperità geometriche su una superficie; grazie a dei bistabili, componenti elettriche che hanno due stati di equilibrio (uno corrispondente allo stato 1, l'altro allo 0). Con un bit è quindi possibile ottenere due stati: sia 1, sia 0. Grazie a 2 bit, è possibile ottenere quattro stati diversi (2*2):
0 | 0 |
0 | 1 |
1 | 0 |
1 | 1 |
Con 3 bit è possibile ottenere otto stati diversi (2*2*2):
Valore binario su 3 bit | Valore decimale |
---|---|
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
Per un gruppo di n bit, è possibile rappresentare 2n valori.
In un numero binario, il valore di un bit, detto peso, dipende dalla posizione del bit partendo da destra. Come le dozzine, le centinaia e le migliaia per numero decimale, il peso di un bit cresce del doppio andando da destra verso sinistra come mostra la tabella seguente:
Numero binario | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
Pesi | 27 = 128 | 26 = 64 | 25 = 32 | 24 = 16 | 23 = 8 | 22 = 4 | 21 = 2 | 20 = 1 |
Per convertire una parola binaria in numeri decimali, basta moltiplicare il valore di ogni bit per il suo peso, poi sommare ogni risultato. Così, la parola binaria 010 vale in decimale:
23x0 + 22x1 + 21x0 + 20x1
= 8x0 + 4x1 + 2x0 + 1x1
= 5
Il byte (in inglese byte o B in maiuscolo nelle notazioni) è un'unità d'informazione composta da 8 bit. Permette ad esempio di stoccare un carattere, come una lettera o una cifra.
Questo raggruppamento di numeri in serie di 8 permette una leggibilità più estesa, allo stesso modo in cui si appresta, in base decimale, a raggruppare i numero a tre per poter distinguere le migliaia. Il numero «1 256 245» è ad esempio più leggibile che «1256245».
Un'unità d'informazione composta da 16 bit è generalmente detta parola (in inglese word).
Un'unità d'informazione con 32 bit di lunghezza è detta parola doppia(in inglese double word, da cui la definizione dword).
Per un byte, il numero più piccolo è 0 (rappresentato da otto zero 00000000), e il più grande è 255 (rappresentato da otto cifre « uno » 11111111), che rappresenta 256 possibilità di valori differenti:
27 =128 | 26 =64 | 25 =32 | 24 =16 | 23 =8 | 22 =4 | 21 =2 | 20 =1 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Da tempo l'informatica utilizza ormai diversi valori per le unità del sistema internazionale. Così molti informatici hanno imparato che 1 kilobyte valeva 1024 byte. Ora, dal dicembre 1998, l'organismo internazionale IEC ha istituito sulla questione (unità binarie). Ecco le unità standardizzate:
Un kilobyte (KB) = 1000 byte;
Un Megabyte (MB) = 1000 KB = 1 000 000 byte;
Un Gigabyte (GB) = 1000 MB = 1 000 000 000 byte;
Un Terabyte (TB) = 1000 GB = 1 000 000 000 000 byte.
Attenzione! Numerosi software (talvolta alcuni sistemi operativi) utilizzano oggi la notazione precedente al 1998 per la quale:
Un kilobyte (KB) = 210 byte = 1024 byte Un Megabyte (MB) = 220 byte = 1024 KB = 1 048 576 byte Un Gigabyte (GB) = 230 byte = 1024 MB = 1 073 741 824 byte Un Terabyte (TB) = 240 byte = 1024 GB = 1 099 511 627 776 byte |
L'IEC ha ugualmente definito il kilo binario (kibi), il mega binario (Mebi), il giga binario (Gibi), il tera binario (Tebi). Ecco le loro definizioni: un kibibyte (kiB) vale 210 = 1024 byte; un Mebibyte (MiB) vale 220 = 1 048 576 byte; un Gibibyte (GiB) vale 230 = 1 073 741 824 byte; un Tebibyte (TiB) vale 240 = 1 099 511 627 776 byte.
Le operazioni aritmetiche semplici come l'addizione, la sottrazione e la moltiplicazione sono facili da effettuare in binario.
L'addizione in binario si fa con le stesse regole del decimale: si cominciano a sommare i bit di peso leggero (i bit di destra) poi si hanno dei riporti quando la somma dei due bit dello stesso peso sorpassa il valore dell'unità più grande (nel caso binario: 1), questo riporto è spostato sul bit di peso più forte successivo. Ad esempio:
0 | 1 | 1 | 0 | 1 | |
+ | 0 | 1 | 1 | 1 | 0 |
- | - | - | - | - | - |
1 | 1 | 0 | 1 | 1 |
La tabella di moltiplicazione in binario è molto semplice:
0x0=0;
0x1=0;
1x0=0;
1x1=1.
La moltiplicazione si effettua formando un prodotto parziale per ogni digit del moltiplicatore (solo i bit non nulli daranno un risultato non nullo). Quando il bit del moltiplicatore è nullo, il prodotto parziale è nullo, quando vale uno, il prodotto parziale è costituito dal moltiplicando spostato dal numero di posizioni uguale al peso del bit di moltiplicatore. Ad esempio:
0 | 1 | 0 | 1 moltiplicando | ||
x | 0 | 0 | 1 | 0 moltiplicatore | |
- | - | - | - | - | - |
0 | 0 | 0 | 0 | ||
0 | 1 | 0 | 1 | ||
0 | 0 | 0 | 0 | ||
- | - | - | - | - | - |
0 | 1 | 0 | 1 | 0 |
Foto: © Pixabay.