Il codice binario è un sistema di codifica posizionale, simile a quello decimale ma che utilizza la base 2 per la rappresentazione dell’informazione.

Il Bit (Binary Digit) è l’unità elementare dell’informazione trattata da un elaboratore, e possiamo considerare il bit una variabile che può assumere solo due valori: 0 e 1.

L’ importanza del codice binario nei sistemi informatici è grazie al contributo di George Boole, che per primo è riuscito a semplificare i  processi logici a delle espressioni formate da 0 ed 1.

Questo sistema di rappresentazione dell’informazione, ci permette di esprimere tramite questi due soli numeri qualsiasi cosa, seguendo delle convenzioni chiamate codifiche.

Nei computer infatti, ogni cosa viene salvata come una sequenza di zero ed uno: era sicuramente più chiaro prima dell’avvento dell’interfaccia grafica ovvero quando l’unica cosa che era possibile usare era una CUI (Character User Interface, conosciuta anche come CLI – interfaccia da linea di comando).

Pensate per esempio al vostro gioco per pc preferito, ai vostri film e alle vostre canzoni: tutte queste sono esempi di codifiche che dal lato della macchina non sono altro che una sequenza di zero ed uno.

tumblr_m4bs10vEIg1rujvlfo1_500
Vediamo ora come rappresentare un numero decimale in binario, e come successivamente ritrasformarlo in decimale.

Rappresentazione binaria di un numero decimale

Ovvero: cambio di base

Da piccoli, ci insegnano a contare in modulo 10: contiamo 0,1,2,3,4,5,6,7,8,9 e poi ricominciamo il conto, aggiungendo una decina.

Il conto in binario, è simile: essendo però in modulo 2, i numeri sono solo 0,1. Quindi invece che 2, avremo 10, invece che 3, avremo 11 e così via.

Mentre per numeri piccoli potremmo pensare di fare i conti a mano, sarebbe abbastanza scomodo per quelli più grandi. Vediamo quindi come eseguire il cambio di base per un numero di arbitraria grandezza:

Dato il nostro numero in base 10, lo dividiamo per finchè non finisce il resto. Il numero binario sarà dato proprio dai resti presi dalla fine all’inizio.

Quindi (nota: nella tabella, il due in alto a destra è per impostare la divisione):

Risultato Resto
5234 2
2617 0
1308 1
654 0
327 0
163 1
81 1
40 1
20 0
10 0
5 0
2 1
1 0
0 1

5234, in binario, equivale a 1010001110010.

Possiamo immaginare la memoria del computer come una fila di scatole che possono contenere o zero o uno. Ogni scatola, rappresenta un bit.

Se con “cn” intendiamo una stringa binaria lunga n bit, l’ultimo bit a destra in posizione c0 viene chiamato LSB (Less Significant Bit – Bit meno significativo) mentre quello in posizione cn (ovvero il primo) viene chiamato MSB (Most Significant Bit – Bit più significativo).

Il bit più significato è in posizione Cn.

Operazioni aritmetiche: addizioni e sottrazioni in binario

Le addizioni in binario sono identiche a quelle in decimale:

1+1 = 10
10+10 = 100
11 +10 = 101

E’ ovviamente più facile farle, se le impostiamo in colonna

0001 + 
0001 =
0010

Lo stesso vale per le sottrazioni.

1-1 = 0
10-10=0
11-10=1

Le moltiplicazioni:

1*0 = 0
1*1 = 1
0*0 =0

E le divisioni:

1/1=1
0/1=0

Conversione da binario a decimale

La conversione contraria, ovvero da un numero binario a decimale, è la seguente:

Dato un numero binario ad esempio 111, l’equivalente in decimale è dato dalla somma:

22+ 21 + 20 = 4+2+1 = 7

111 in binario equivale a 7.

Attenzione però: bisogna eseguire l’operazione usando solo i bit che valgono uno.

Vediamo un’altro esempio per chiarire meglio le idee:

101= 22 + 0 + 20 = 5

La posizione del bit, contando da destra verso sinistra, indica a che potenza di due equivale. In questo caso:

  • il primo bit è in posizione 2 quindi equivale a 22 ovvero 4
  • Il secondo bit vale zero quindi non si conta (altrimenti sarebbe 21 ovvero 2)
  • Il terzo bit è in posizione zero quindi vale 20 ovvero 1

Vediamo un’altro esempio:

10101110: sono 8 bit. L’ equivalente in decimale è dato dalla somma di:

27 + 0 + 25 + 24 +  23 + 22 + 21 + 0 = 348


Sapendo il numero di bit, possiamo anche predire che range di numeri possiamo rappresentarci: il calcolo è semplice, dati n bit possiamo rappresentare al massimo 2n -1 numeri.

Nell’ ultimo esempio, usavamo 8 bit: il massimo numero che possiamo rappresentare con 8 bit è 28 -1 ovvero 256.

In informatica, quando parliamo di 8 bit ci riferiamo più semplicemente ad 1 byte.

Per essere precisi, dovremmo riferirci ad 8 bit col nome di Ottetto in quanto con byte ci si riferisce per definizione all’ unità minima trasferibile: esistono infatti (vecchi) computer che con 1 byte si riferiscono a 7 bit.


Kilobyte e Kibibyte

Il sistema internazionale (SI) ha stabilito che con il termine kilobyte, ci si deve riferire (come per le altre unità di misura) a 103 byte.

Per riferirsi invece a 210byte dovremmo utilizzare il termine più preciso kibibyte: i produttori di hard disk, indicano la dimensione dello stesso utilizzando la definizione precisa “GigaByte”. Il nostro computer invece, per indicare lo spazio disponibile, utilizza erroneamente il termine gigabyte intendendo invece gibibyte.

Si ringrazia Mattyw per la precisazione di questo paragrafo 🙂

Approposito della notazione

Infine, una piccola precisazione di notazione: con KB ci si riferisce a KiloByte, con Kb si riferisce a kilobit. La differenza è nella “b” minuscola (bit) o maiuscola (byte).