SISTEMI DI NUMERAZIONE POSIZIONALI I numeri sono entità matematiche astratte e vanno distinti dalla loro rappresentazione. Definiamo con sistema di numerazione un sistema utilizzato per esprimere i numeri e le operazioni che si possono effettuare su di essi. Nei sistemi posizionali la posizione delle diverse cifre del numero è fondamentale. Un sistema si chiama posizionale se una stessa cifra ha un valore diverso (peso) a seconda della posizione: la cifra all estrema destra prende il nome di cifra meno significativa; la cifra all estrema sinistra è detta cifra più significativa. La base (ossia un numero naturale) e la posizione della cifra indicano il fattore moltiplicante (peso) di ogni cifra presente nel numero. Quindi ogni cifra assume un valore diverso a seconda della posizione che assume all interno del numero. Il sistema di numerazione che utilizziamo oggi è il sistema numerico decimale-posizionale, è un sistema in base 10 (decimale). I nostri numeri vengono scritti utilizzando dieci cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Gli altri numeri vengono espressi in funzione delle potenze della base (10n). La posizione di ogni singola cifra si conta da destra verso sinistra, a partire dalla posizione 1 (cifra meno significativa), come indicato nel seguente esempio:
ESEMPIO Analizziamo il numero 7354, ottenuto dalla somma di 4 addendi: 735410= 7 * 1000 + 3 * 100 + 5 * 10 + 4 * 1 = 7 * 103 + 3 * 102 + 5 * 101 + 4 * 100 CONVERSIONE DA BINARIO A DECIMALE Negli elaboratori i numeri sono espressi in binario. Effettuiamo una conversione da numero binario a numero decimale applicando direttamente la definizione di numerazione posizionale. ESEMPIO Convertire il numero binario 10012 in base 10.
ADDIZIONE tra due o più NUMERI BINARI Si esegue come una normale addizione. Bisogna però ricordare che 2 UNITA' di un DATO ORDINE, formano 1 UNITA' dell'ordine IMMEDIATAMENTE SUPERIORE. Esempio: vogliamo sommare tra loro i numeri binari 10011 e 10001 che indicano, rispettivamente, i numeri decimali 19 e 17. Iniziamo con l'incolonnare i due numeri: I addendo 1 0 0 1 1 + II addendo 1 0 0 0 1 = Somma Ora sommiamo la cifra di 1 ordine del primo addendo e quella del secondo addendo. Dovremo eseguire: 1 + 1 = 2. Ma sappiamo che 2 UNITA' di un DATO ORDINE, formano 1 UNITA' dell'ordine IMMEDIATAMENTE SUPERIORE. Scriviamo allora, come somma 0 e come riporto nella colonna di ordine superiore il numero 1. Avremo: riporto 1 I addendo 1 0 0 1 1 + II addendo 1 0 0 0 1 = Somma 0 Ora sommiamo la cifra di 2 ordine del primo addendo e quella del secondo addendo. Dovremo eseguire: 1 + 0 = 1.
Ma dobbiamo anche aggiungere 1 che ne riportava e quindi avremo 2 che vanno a formare una unità di ordine superiore. Quindi scriviamo: riporto 1 1 I addendo 1 0 0 1 1 + II addendo 1 0 0 0 1 = Somma 0 0 Ora sommiamo la cifra di 3 ordine del primo addendo e quella del secondo addendo. Avremo: 0 + 0 = 0. Aggiungiamo 1 che ne riportava e abbiamo 1. Ovvero: riporto 1 1 I addendo 1 0 0 1 1 + II addendo 1 0 0 0 1 = Somma 1 0 0 Ora sommiamo la cifra di 4 ordine del primo addendo e quella del secondo addendo. Avremo: Ovvero: 0 + 0 = 0. riporto 1 1 I addendo 1 0 0 1 1 + II addendo 1 0 0 0 1 = Somma 0 1 0 0 Infine sommiamo la cifra di 5 ordine del primo addendo e quella del secondo addendo. Avremo: 1 + 1 = 2: che vanno a formare una unità di ordine superiore. Quindi scriviamo:
riporto 1 1 1 I addendo 1 0 0 1 1 + II addendo 1 0 0 0 1 = Somma 1 0 0 1 0 0 Allora la somma di 10011 e 10001 è uguale a 100100. Verifichiamo con il SISTEMA DECIMALE: NUMERO BINARIO NUMERO DECIMALE 10011 + 19 + 10001 = 17 = 100100 36 Infatti: 1 x 25 + 0 x 24 + 0 x 23+ 1 x 22+ 0 x 21 + 0 x 20 = = 1 x 32 + 0 x 16 + 0 x 8+ 1 x 4+ 0 x 2 + 0 x 1 = = 32 + 0 + 0 + 4 + 0 + 0 = 36.
SOTTRAZIONE tra due NUMERI BINARI Si esegue come una normale sottrazione. Bisogna però tenere conto che ogni volta che si deve SOTTRARRE dalla cifra 0 la cifra 1, occorre CHIEDERE IN PRESTITO una unità alla cifra di ordine immediatamente superiore e che essa vale 2 UNITA' dell'ordine immediatamente inferiore. Essendo il 2 la base del sistema binario la cifra più a destra ha due unità in più. Esempio: vogliamo sottrarre al numero binario 11101 il numero binario 1110 che indicano, rispettivamente, i numeri decimali 29 e 14. Iniziamo con l'incolonnare i due numeri: minuendo 1 1 1 0 1 - differenza Ora sottraiamo dalla cifra di 1 ordine del minuendo, la cifra di 1 ordine del sottraendo. Dovremo eseguire: Avremo: 1-0 = 1. minuendo 1 1 1 0 1 - differenza 1 Ora sottraiamo dalla cifra di 2 ordine del minuendo, la cifra di 2 ordine del sottraendo. Dovremo eseguire: 0-1. Non possiamo eseguire l'operazione. Allora dobbiamo farci prestare 1 unità dalla cifra di 3 ordine che vale 2 unità di ordine inferiore. Quindi avremo: prestito 2
minuendo 1 1 1 0 1 - differenza 1 Quindi la nostra differenza diventa: 2-1 = 1 ovvero prestito 2 minuendo 1 1 1 0 1 - differenza 1 1 Ora sottraiamo dalla cifra di 3 ordine del minuendo, la cifra di 3 ordine del sottraendo ricordando che c'è stato il prestito di un'unità. Quindi la sottrazione da eseguire diventa : 0-1. Non possiamo eseguire l'operazione. Allora dobbiamo farci prestare 1 unità dalla cifra di 4 ordine che vale 2 unità di ordine inferiore. Quindi avremo: prestito 2 2 minuendo 1 1 1 0 1 - differenza 1 1 Quindi la nostra differenza diventa: 2-1 = 1 ovvero prestito 2 2 minuendo 1 1 1 0 1 - differenza 1 1 1
Ora sottraiamo dalla cifra di 4 ordine del minuendo, la cifra di 4 ordine del sottraendo ricordando che c'è stato il prestito di una unità. Quindi la sottrazione da eseguire diventa : 0-1. Non possiamo eseguire l'operazione. Allora dobbiamo farci prestare 1 unità dalla cifra di 5 ordine che vale 2 unità di ordine inferiore. Quindi avremo: prestito 2 2 2 minuendo 1 1 1 0 1 - differenza 1 1 1 Quindi la nostra differenza diventa: 2-1 = 1 ovvero prestito 2 2 2 minuendo 1 1 1 0 1 - differenza 1 1 1 1 Di conseguenza, la cifra di 5 ordine del minuendo è rimasta a zero. Pertanto avremo: prestito 2 2 2 minuendo 1 1 1 0 1 - differenza 0 1 1 1 1 Allora la differenza tra 11101 e 1110 è uguale a 1111.
Verifichiamo con il SISTEMA DECIMALE: NUMERO BINARIO NUMERO DECIMALE 11101-29 - 1110 = 14 = 1111 15 Infatti: 1 x 23 + 1 x 22 + 1 x 21+ 1 x 20 = = 1 x 8 + 1 x 4 + 1 x 2+ 1 x 1 = = 8 + 4 + 2 + 1 = 15. MOLTIPLICAZIONE tra due NUMERI BINARI Si esegue come una normale moltiplicazione ricordando, però, che 2 UNITA' di un DATO ORDINE, formano 1 UNITA' dell'ordine IMMEDIATAMENTE SUPERIORE. Esempio: vogliamo moltiplicare il numero binario 111 con il numero binario 101 che indicano, rispettivamente, i numeri decimali 7 e 5. Procediamo nei modi consueti: I fattore 1 1 1 x II fattore 1 0 1 = Iniziamo col moltiplicare la cifra di 1 ordine del II fattore (1) per ciascuna cifra del I fattore, in modo da ottenere il primo prodotto parziale: I fattore 1 1 1 x II fattore 1 0 1 = I prodotto parziale 1 1 1
Moltiplichiamo la cifra di 2 ordine del II fattore (0) per ciascuna cifra del I fattore, in modo da ottenere il secondo prodotto parziale: I fattore 1 1 1 x II fattore 1 0 1 = I prodotto parziale 1 1 1 II prodotto parziale 0 0 0 Moltiplichiamo la cifra di 3 ordine del II fattore (1) per ciascuna cifra del I fattore, in modo da ottenere il terzo prodotto parziale: I fattore 1 1 1 x II fattore 1 0 1 = I prodotto parziale 1 1 1 II prodotto parziale 0 0 0 II prodotto parziale 1 1 1 Ora eseguiamo la somma dei tre prodotti parziali ricordandoci che 2 UNITA' di un DATO ORDINE, formano 1 UNITA' dell'ordine IMMEDIATAMENTE SUPERIORE. I fattore 1 1 1 x II fattore 1 0 1 = I prodotto parziale 1 1 1 II prodotto parziale 0 0 0 II prodotto 1 1 1
parziale riporti 1 1 prodotto 1 0 0 0 1 1 Quindi il prodotto tra 111 e 101 è uguale a 100011. Verifichiamo con il SISTEMA DECIMALE: NUMERO BINARIO NUMERO DECIMALE 111 x 7 x 101 = 5 = 100011 35 Infatti: 1 x 25 + 0 x 24 + 0 x 23+ 0 x 22 + 1 x 21 + 1 x 20 = = 1 x 32 + 0 x 16 + 0 x 8 + 0 x 4 + 1 x 2 + 1 x 1= = 32 + 0 + 0 + 0 + 2 + 1= 35. Divisione tra due NUMERI BINARI Si applicano le regole consuete della divisione ricordando sempre che 2 UNITA' di un DATO ORDINE, formano 1 UNITA' dell'ordine IMMEDIATAMENTE SUPERIORE. Esempio: vogliamo dividere il numero binario 111100 con il numero binario 100 che indicano, rispettivamente, i numeri decimali 60 e 4. Procediamo nei modi consueti:
Abbassiamo le prime tre cifre del dividendo 111 e dividiamo per 100. Il risultato è 1. Moltiplichiamo 1 per 100 e otteniamo 100. Eseguiamo 111-100 = 11. Abbassiamo la quarta cifra del dividendo 1 e dividiamo 111 per 100. Il risultato è 1. Moltiplichiamo 1 per 100 e otteniamo 100. Eseguiamo 111-100 = 11. Abbassiamo la quinta cifra del dividendo 0 e dividiamo 110 per 100. Il risultato è 1. Moltiplichiamo 1 per 100 e otteniamo 100. Eseguiamo 110-100 = 10. Abbassiamo l'ultima cifra del dividendo 0 e dividiamo 100 per 100. Il risultato è 1. Moltiplichiamo 1 per 100 e otteniamo 100. Eseguiamo 100-100 = 0. Quindi la divisione tra 111100 e 100 è uguale a 1111. Verifichiamo con il SISTEMA DECIMALE: NUMERO BINARIO NUMERO DECIMALE 111100 : 60 : 100 = 4 = 1111 15 Infatti: 1 x 23 + 1 x 22 + 1 x 21+ 1 x 20 = = 1 x 8 + 1 x 4 + 1 x 2 + 1 x 1 = = 8 + 4 + 2 + 1 = 15. Facciamo un altro esempio.
vogliamo dividere il numero binario 11001 con il numero binario 101 che indicano, rispettivamente, i numeri decimali 25 e 5. Procediamo nei modi consueti: Abbassiamo le prime tre cifre del dividendo 110 e dividiamo per 101. Il risultato è 1. Moltiplichiamo 1 per 101 e otteniamo 101. Eseguiamo 110-101 ricordando che quando occorre CHIEDERE IN PRESTITO una unità alla cifra di ordine immediatamente superiore essa vale 2 UNITA' dell'ordine immediatamente inferiore quindi il risultato è 1. Abbassiamo la quarta cifra del dividendo 0 e dividiamo 10 per 101. Il risultato è 0. Abbassiamo la quinta cifra del dividendo 1 e dividiamo 101 per 101. Il risultato è 1. Moltiplichiamo 1 per 101 e otteniamo 101. Eseguiamo 101-101 = 0. Quindi la divisione tra 11001 e 101 è uguale a 101. Verifichiamo con il SISTEMA DECIMALE: NUMERO BINARIO NUMERO DECIMALE 11001 : 25 : 101 = 5 = 101 5 Infatti: 1 x 22 + 0 x 21 + 1 x 20 = = 1 x 4 + 0 x 2 + 1 x 1 = = 4 + 0 + 1 = 5.
CONVERSIONE DA OTTALE A DECIMALE Anche il sistema di numerazione ottale è un sistema posizionale: ogni cifra componente un valore espresso in ottale pesa infatti di più o di meno, in base alla posizione occupata all'interno del numero. La base del sistema di numerazione ottale è 8, essendo proprio 8 le cifre dell'alfabeto usato (dallo 0 al 7). Il numero ottale viene indicato con il pedice 8. ESEMPIO Convertire il numero ottale 3588 in base 10. CONVERSIONE DA ESADECIMALE A DECIMALE Il sistema esadecimale ha base 16 e utilizza un alfabeto di 16 cifre dove dopo la cifra 9 si prosegue con le prime 6 lettere maiuscole dell alfabeto. Nella tabella seguente riportiamo la codifica nelle tre basi esadecimale, decimale e binaria. ESEMPIO Convertire il numero esadecimale 3B2 16 in base 10.
Abbiamo avuto modo di dire, in una precedente lezione, che: il SISTEMA ESADECIMALE ha come BASE 16; 16 UNITA' di un DATO ORDINE, formano 1 UNITA' dell'ordine IMMEDIATAMENTE SUPERIORE; per rappresentare un NUMERO esadecimale si usano le cifre da 0 a 9 alle quali si aggiungono le prime 6 lettere dell'alfabeto. Quindi: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Le cifre da 0 a 9 hanno sempre lo stesso valore, mentre le lettere hanno i seguenti valori: A = 10 B = 11 C = 12 D = 13 E = 14 F = 15. Per convertire un NUMERO ESADECIMALE in un NUMERO DECIMALE si procede in modo analogo a quanto visto nel passaggio da un numero binario ad un numero decimale, solamente che, anziché moltiplicare per le potenze del 2 moltiplicheremo per le potenze del 16. Quindi dobbiamo scrivere il numero dato come la somma dei prodotti delle cifre del numero, per le potenze decrescenti del 16.
Vediamo un esempio: vogliamo scrivere il numero esadecimale DE2 in base 10 ricordando che D = 13 E = 14 D x 162 + E x 161 + 2 x 160 = = 13 x 256 + 14 x 16 + 2 x 1 = = 3.328 + 224 + 2 = 3.554. Quindi: DE2(16) = 3.554(10). Se il numero esadecimale NON è INTERO per trasformalo in numero decimale occorre sapere che: la conversione della PARTE INTERA avviene, nei modi consueti, scrivendo la somma dei prodotti delle cifre del numero, per le potenze decrescenti del 16. la conversione della PARTE FRAZIONARIA avviene, scrivendo la somma dei prodotti delle cifre del numero, per le potenze crescenti NEGATIVE del 16. Esempio: vogliamo scrivere il numero esadecimale 13,F in base 10 ricordando che F = 15. 1 x 161 + 3 x 160 + F x 16-1 = = 1 x 16 + 3 x 1 + F x 1/16 = = 16 + 3 + 15 x 1/16 =
= 16 + 3 + 15/16 = = (256 +48 +15)/16 = = 319/16 = 19,9375. Quindi: 13,F(16) = 19,9375(10).