✖

Cambio di base

Come convertire i numeri dal sistema decimale ad altri sistemi di numerazione e, viceversa, come convertire i numeri da altri sistemi al sistema decimale.

Che cos’è un sistema di numerazione

Di solito lavoriamo con il sistema decimale. Questo sistema ha dieci cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Il sistema decimale ha una caratteristica: quando moltiplichiamo un numero, per esempio 57, per dieci, ci spostiamo di un ordine — per scrivere il numero serve una cifra in più: 570.

Possiamo avere anche altri sistemi di numerazione: un sistema ottale, per esempio, avrebbe soltanto le cifre 0, …, 7. L’espressione 7 + 1 sarebbe quindi uguale al numero 10, perché nel sistema ottale non abbiamo la cifra 8. Un sistema esadecimale avrebbe le cifre 0, 1, … 14, 15. A volte, al posto delle cifre maggiori di 9, usiamo le lettere, perciò le cifre del sistema esadecimale sono 0, …9, A, B, C, D, E, F.

Sorprendentemente, incontriamo altri sistemi di numerazione anche nella vita di ogni giorno. Per esempio il tempo — secondi e minuti li contiamo in un sistema sessagesimale. Ogni istante della giornata si può scrivere come un numero sessagesimale di tre cifre. La prima cifra indica le ore, la seconda i minuti, la terza i secondi. Se come separatore scegliamo i due punti, otteniamo per esempio il numero 14:05:59. Osserva che, se a questo orario aggiungiamo un secondo, non otteniamo 14:05:60, ma 14:06:00 — perché 60 non è una cifra valida del sistema sessagesimale.

Dal sistema decimale a quello binario

Supponiamo di avere sul foglio il numero 70. Vogliamo convertirlo nel sistema binario, cioè in base 2. Il principio è piuttosto semplice: dividiamo il numero da convertire per 2 e continuiamo a dividere finché arriviamo a zero, annotando i resti della divisione intera. Se vogliamo convertire il numero in un altro sistema, per esempio quello esadecimale, dividiamo per 16. Se vogliamo convertirlo in base 6, dividiamo per 6. In pratica si procede così:

70:2=35⟶0(resto)35:2=17⟶117:2=8⟶18:2=4⟶04:2=2⟶02:2=1⟶01:2=0⟶1

Il numero in base 2 è dato dai resti delle divisioni. Però non li prendiamo dall’alto, ma dal basso. Quindi il numero 70 nel sistema binario è 1000110.

Dal sistema binario a quello decimale

Per il passaggio inverso si procede così. Prendiamo il numero 1100010 e convertiamolo nel sistema decimale. Questo verso è più semplice: basta calcolare la somma

11000102=1⋅26+1⋅25+0⋅24+0⋅23+0⋅22+1⋅21+0⋅20

Ogni addendo ha la forma x · 2i, dove x è una cifra del numero binario di partenza e i aumenta di uno alla volta, partendo da destra. Poiché stiamo convertendo il numero 1100010, la somma si presenta così:

11000102=1⋅26+1⋅25+0⋅24+0⋅23+0⋅22+1⋅21+0⋅20

Il numero 1100010 ha sette cifre, quindi gli esponenti del due saranno via via 6, 5, …, 1, 0. Dopo aver calcolato le potenze e le moltiplicazioni otteniamo l’espressione

11000102=64+32+2=98.

Perché questo procedimento funziona?

Possiamo mostrarlo nel sistema decimale. Che cosa significano in realtà le cifre di un numero, per esempio di 7384? La cifra 4 indica le unità, la cifra 8 le decine, la cifra 3 le centinaia e la cifra 7 le migliaia. Quindi possiamo scrivere che

7384=7⋅1000+3⋅100+8⋅10+4⋅1

Possiamo modificare ancora l’espressione, in modo da non usare i numeri 100, 10 e 1, ma avere sempre una potenza di dieci. Poiché 100 = 1, 101 = 10 e così via, possiamo scrivere

7384=7⋅103+3⋅102+8⋅101+4⋅100

Ogni numero del sistema decimale si può descrivere allo stesso modo, e gli addendi hanno la forma x · 10i, dove x è una cifra da 0 a 9: le cifre sono dieci. Il valore i è un numero intero non negativo che indica l’ordine. Se i = 0, l’addendo indica le unità; se i = 2, indica le centinaia (perché 102 = 100).

Proviamo ora a convertire il numero 7348 dal sistema decimale al, ehm…, sistema decimale. Avrà un senso. Dividiamo il numero 7348 per 10:

7348:10=734⟶8(resto)734:10=73⟶473:10=7⟶37:10=0⟶7

Se leggiamo i resti dal basso, otteniamo il numero 7348 — di nuovo il numero di partenza, che volevamo convertire in … lo stesso sistema.

Se vogliamo descrivere il sistema binario, facciamo esattamente lo stesso — tutti gli addendi avranno la forma x · 2i, dove x è la cifra 0 oppure 1. Il valore i indica di nuovo gli ordini. Proprio come le divisioni successive per dieci ci danno gli ordini di un numero nel sistema decimale, così le divisioni successive per due ci danno gli ordini nel sistema binario.

Osserva inoltre che, quando dividiamo un numero per dieci e ci chiediamo il resto, questo resto sta sempre nell’intervallo [0; 9]. Se dividiamo un numero per due, il resto può essere 0 oppure 1.

Passare ad altre basi

Il procedimento appena visto per passare dal sistema decimale a quello binario è così generale che si può usare anche per altri sistemi. Se vogliamo convertire il numero 185 nel sistema esadecimale, dividiamo semplicemente per 16:

185:16=11⟶9(resto)11:16=0⟶11

In base 16 il numero 185 avrebbe la forma (11; 9). Al posto delle «cifre» maggiori di 9 si usano di solito le lettere, quindi 10 = A, 11 = B, 12 = C, … Possiamo così scrivere che in base 16 il numero 185 è B9.

Allo stesso modo possiamo convertire il numero B9 dalla base 16 al sistema decimale.

B916=11⋅161+9⋅160=11⋅16+9=185