Codifica numeri naturali

Teoria corso tecnologie 2° - docente Massimo Cappellano presso ISIS "Andrea Ponti" di Gallarate - massimocappellano72 [at] gmail [dot] com

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:

345/2 = 172 resto 1
172/2 =  86 resto 0
 86/2 =  43 resto 0
 43/2 =  21 resto 1
 21/2 =  10 resto 1
 10/2 =   5 resto 0
  5/2 =   2 resto 1
  2/2 =   1 resto 0
  1/2 =   0 resto 1

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.

CONVERSIONE NUMERO DECIMALE a BINARIO

35 (base 10) ---> 1 0 0 0 1 1 (base 2)

 35/2 = 17 resto 1
 17/2 =  8 resto 1
  8/2 =  4 resto 0
  4/2 =  2 resto 0
  2/2 =  1 resto 0
  1/2 =  0 resto 1
  
quindi = 100011

CONVERSIONE NUMERO DECIMALE in OTTALE

1602 (base 10) --> 3102 (base 8)

 1602/8 = 200 resto 2
  200/8 =  25 resto 0
   25/8 =   3 resto 1
    3/8 =   0 resto 3
	 
quindi = 3102

CONVERSIONE NUMERO DECIMALE in ESADECIMALE

16034 (base 10) -> 3 E A 2 (base 16)

 16034/16 = 1002 resto 2 
  1002/16 = 62 resto 10 (A)
    62/16 =  3 resto 14 (E)
	   3/16 =  0 resto 3 
   
quindi = 3EA2

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.

DA BINARIO A OTTALE e VICEVERSA

Si osservi che ogni cifra del sistema ottale può essere rappresentata con una tripletta di bit come mostrato nella seguente tabella:

Regola pratica:

Da binario a ottale

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

Da ottale a binario

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

DA BINARIO A ESADECIMALE e VICEVERSA

Da binario a esadecimale

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

Da esadecimale a binario

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

OPERAZIONI DI ADDIZIONE TRA NUMERI IN BASE BINARIA

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:

0 + 0 = 0 con riporto 0
0 + 1 = 1 con riporto 0
1 + 0 = 1 con riporto 0
1 + 1 = 0 con riporto 1

Vediamo qualche semplice esempio:

  1 +               101 +               10110101 +
  1  =               11 =                1000110 =
------       --------------      ----------------------
 10                1000                 11111011

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:

  10110101 +
  11011110 =     OVERFLOW
--------------------
 110010011 

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:

 1 +
 1 =
----
10
 1 +
 1 +
 1 =
-------
11

ESEMPIO DI OPERAZIONI TRA NUMERI IN BASE 4

 2 +
 2 =
----
10
 2 +
 3 =
----
11

Last updated