Codifica numeri naturali
Teoria corso tecnologie 2° - docente Massimo Cappellano presso ISIS "Andrea Ponti" di Gallarate - massimocappellano72 [at] gmail [dot] com
Last updated
Teoria corso tecnologie 2° - docente Massimo Cappellano presso ISIS "Andrea Ponti" di Gallarate - massimocappellano72 [at] gmail [dot] com
Last updated
Spiegare conversione da numero espresso in base 10 a numero espresso in base N: algoritmo divisioni per N tenuto conto del resto.
Spiegazione della regola (vedi allegato)
Vediamo un esempio, consideriamo il numero 345 in base 10 e cerchiamo la rappresentazione in base 2. Si ha allora:
Leggendo le cifre dal basso verso l'alto (in quanto si ottengono a partire dalla meno significativa), si ha la rappresentazione binaria: 101011001
Vediamo in seguito alcuni esempi di conversioni da numeri decimali a numeri binari, ottali ed esadecimali.
35 (base 10) ---> 1 0 0 0 1 1 (base 2)
1602 (base 10) --> 3102 (base 8)
16034 (base 10) -> 3 E A 2 (base 16)
In seguito capiamo come la base ottale ed esadecimale siano utili per rappresentare i numeri binari perché sono una forma più compatta di della rappresentazione binaria.
Si osservi che ogni cifra del sistema ottale può essere rappresentata con una tripletta di bit come mostrato nella seguente tabella:
Regola pratica:
Si raggruppano le cifre del numero binario a gruppi di tre a partire da destra, e si trasformano le cifre di ciascun gruppo nel corrispondente numero ottale.
Dato il binario 1011110111
Si può scrivere come:
quindi: 1011110111 base 2 = 1367 base 8
Si fa corrispondere a ciascuna delle cifre ottali che compongono il numero un gruppo di tre bit.
Per esempio, dato il numero ottale 625
si può scrivere
quindi: 625 base 8 = 110010101 base 2
Si raggruppano le cifre del numero per gruppi di 3 a partire da destra, e si trasformano le cifre di ciascun gruppo nel corrispondente numero esadecimale, secondo la tabella di conversione.
Per esempio, il numero binario 1011110111
si può scrivere come
quindi 1011110111 base 2 = 2F7 base 16
Si fa corrispondere a ciascuna delle cifre esadecimali che compongono il numero un gruppo di 4 bit secondo la tabella di conversione.
Per esempio, dato un numero esadecimale
C3B
quindi: C3B base 16 = 110000111011 base 2
Data la rappresentazione binaria dei numeri, un problema interessante è quello di capire come possano essere effettuate le usuali operazioni aritmetiche su tali numeri. Nel caso della rappresentazione decimale ci è stato insegnato fin da piccoli come fare le operazioni e abbiamo quindi un procedimento automatico per eseguirle. Si pensi, ad esempio, alla operazione di addizione: il nostro procedimento automatico prevede di mettere in colonna i numeri da sommare e quindi prevede delle ben precise regole di somma con l'effettuazione di riporto ogni volta che una somma parziale supera il valore 9.
Lo stesso identico procedimento automatico di addizione può essere utilizzato anche nel caso di operazioni in base 2. L'unica differenza è che in questo caso si devono effettuare riporti nel caso in cui la somma parziale supera 1. Avremo quindi la seguente tabella di regole di somma parziale da utilizzare nell'eseguire le nostre operazioni:
Vediamo qualche semplice esempio:
In questo modo si possono continuare ad usare gli stessi procedimenti imparati per l'aritmetica decimale per eseguire una qualunque operazione. Nel seguito non analizzeremo in dettaglio il problema, ma si può verificare che anche i procedimenti per eseguire sottrazioni o prodotti ( e tutte le altre operazioni) possono essere applicati in modo naturale.
Un aspetto importante dell'aritmetica dei calcolatori è invece il fatto che in alcuni casi si può avere un errore come risultato di un'operazione. In particolare, il problema può sorgere nel caso in cui la somma di due numeri rappresentabili con il numero di bit prescelto non sia rappresentabile e quindi abbia un errore di overflow. Supponiamo di avere numeri rappresentabili mediante 8 bit e di eseguire la seguente somma:
Si ha un errore di overflow in quanto il risultato della somma non è rappresentabile con 8 bit ma ne richiede almeno 9. In situazioni di questo tipo si ha un errore nell'esecuzione dell'operazione e l'arresto dell'elaborazione.
Quindi:
BINARIO
OTTALE
000
0
001
1
010
2
011
3
100
4
101
5
110
6
111
7
1
011
110
111
1
3
6
7
6
2
5
110
010
101
BINARIO
ESADECIMALE
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
1001
9
1010
A
1011
B
1100
C
1101
D
1110
E
1111
F
10
1111
0111
2
F
7
C
3
B
1100
0011
1011