Rappresentazione posizionale degli interi
Ricordiamo che la notazione decimale posizionale, cui siamo
abituati, è
quella in cui il significato di ciascuno dei dieci simboli
di
base
(le cifre 0,1,2,3,4,5,6,7,8,9) dipende dalla
posizione
di questo all' interno della sequenza di cifre che rappresenta un
determinato numero intero.
P. es. il numero 361 va interpretato come: 3 centinaia +
6 decine + 1 unità . Ovvero:
3 102 + 6 101 + 1 100
Se invece di usare le dieci cifre usuali ne usiamo solo due (0,1
rappresentabili in un circuito mediante tensione alta e tensione bassa)
avremo la possibilità di una rappresentazione posizionale
in base due in cui un numero è costituito unicamente da una
sequenza di 0 e 1.
P.es.
11010 va interpretato come
1 24 + 1 23 +
0 22 + 1 21 +
0 20
Ovvero, indicando con un sottoscritto 10
oppure
2 la rappresentazione in base 10 o 2 rispettivamente,
110102 = 2610
In base 8 avremo a disposizione le 8 cifre 0,1,2,3,4,5,6,7
ed un numero come 1238 (da leggere: "uno due tre ottale")
va interpretato sulla
base dell' espressione
1 82 +
2 81 +
3 80
per dare 8310.
Ancora, se la base è maggiore di 10 occorrono ulteriori simboli per
rappresentare le cifre oltre il 9. Nel caso della base 16 (molto
utilizzata con i computer) si introducono i simboli (lettere)
a,b,c,d,e,f per rappresentare le cifre pari ai valori numerici
(decimali) di 10,11,12,13,14 e 15.
Pertanto numeri come a316 oppure ff16
(da leggere "a tre esadecimale" oppure "effe effe esadecimale")
vanno tradotti in base 10 come
10 161 + 3 160 = 16310
( usando il fatto che a16 = 1010
)
e
15 161 +
15 160 = 25510
(usando il fatto che f16 = 1510
)
rispettivamente.
Per trasformare numeri interi da base 10 a base qualsiasi,
vale il seguente algoritmo basato sulle propieta' del quoziente e
del resto della divisione tra interi:
0. si divide il numero che si vuole trasformare per la base.
1. Il resto diventa la cifra meno significativa del numero espresso
nella nuova base.
2. Il quoziente viene diviso di nuovo per la base.
3. Il nuovo resto sarà la cifra successiva della
rappresentazione nella nuova base.
4. Si riapplicano i passi 2 e 3 fino al punto in cui si ottiene 0
come quoziente al passo 2.
5. Il resto darà la cifra più significativa e termina la
conversione.
Esempi:
- vogliamo trasformare 83 da base 10 a base 8:
- 83/8 = 10 con resto 3
- 10/8 = 1 con resto 2
- 1/8 = 0 con resto 1
- prendiamo i resti nell' ordine inverso a quello di
apparizione: 123 in base 8.
- vogliamo trasformare 93 da base 10 a base 16:
- 93/16 = 5 con resto
13, rappresentato dalla cifra d
- 5/16 = 0 con
resto 5
- prendiamo i resti nell' ordine inverso a quello di
apparizione: 5d in base 16.
- vogliamo trasformare 25 da base 10 a base 2:
- 25/2 = 12 con resto
1
- 12/2 = 6 con
resto 0
- 6/2 =
3 con
resto 0
- 3/2 = 1 con
resto 1
- 1/2 = 0 con
resto 1
- prendiamo i resti nell' ordine inverso a quello di
apparizione: 11001 in base 2.
Si lascia come esercizio verificare che l' algoritmo fornisce la
rappresentazione cercata (si
tratta di utilizzare direttamente la definizione di quoziente e resto
della divisione tra interi).
Per conversioni tra due basi entrambe diverse da 10, in generale si
passa per una conversione intermedia in base 10 (in cui si sanno
eseguire i calcoli agevolmente).
Se pero' le due basi sono una una potenza dell' altra la
conversione si semplifica notevolmente e puo' essere
eseguita in modo diretto (senza passaggio per base 10)
sempicemente lavorando sulla conversione a gruppi di cifre.
Vediamo un esempio di conversioni tra base 2 e base 16=24:
si parte dall' osservazione che le cifre esadecimali
(0, ... , f) sono rappresentabili mediante numeri binari a
4 cifre:
0 <-> 0000
1 <-> 0001
2 <-> 0010
...
e <-> 1110
f <-> 1111
Sfruttando le proprieta' dell' aritmetica si vede facilmente che
per passare da un numero in rappresentazione binaria alla
corrispondente rappresentazione esadecimale bastera' raggruppare le
cifre binarie a 4 alla volta (iniziando dalla meno significativa, l'
ultima a destra) completando con zeri iniziali se l' ultimo
gruppo di quattro cifre risultasse incompleto. E poi si converte
ciascuno dei gruppi di quattro cifre binarie nella crrispondente cifra
esadecmale.
Es:
1110112 = 0011 1011 = 3b16
Per la conversione esadecimale-binaria si procede analogamente: ad ogni
cifra esadecimale, nell' ordine di apparizione si fa
corrispondere la sequenza di 4 cifre binarie corrispondente.
Es:
fa16 = 1111 1010 =
111110102