Istituto Tecnico Lombardo Radice Sistemi di numerazione Appunti di Informatica - Roberto De Virgilio 1
1 Regole di un sistema di numerazione I sistemi di numerazioni sono linguaggi, quindi sono un insieme di simboli e regole. Solitamente i simboli utilizzati sono le cifre su cui applichiamo la semplice regola posizionale nella quale, le cifre in base alla posizione che occupano nel numero assumono un valore diverso da quello delle cifre precedenti o di quelle successive. 1.1 Sistema decimale Consideriamo il sistema decimale: tale sistema è il comune sistema di numerazione impiegato, tramandato dalla cultura araba. In tale sistema le cifre impiegate sono dieci (0, 1, 2, 3, 4, 5, 6, 7, 8, 9). La combinazione di questi dieci simboli ci permette di costruire i numeri, come ad esempio il numero 2478. In questo esempio possiamo evidenziare le varie cifre e il valore associato alla singola cifra rispetto alla posizione occupata, come segue: 2478 = 2 10 3 + 4 10 2 + 7 10 1 + 8 10 0 In questa forma ogni cifra è moltiplicata per una potenza del 10: l esponente di tale potenza è dato dalla posizione della cifra a cui viene sottratto 1; quindi ad esempio la cifra 2 che ricopre la posizione 4 (partendo da sinistra verso destra) è moltiplicata per 10 3 (l esponente 3 è dato da 4 1), la cifra 4 che ricopre la posizione 3 è moltiplicata per 10 2 (l esponente 2 è dato da 3 1) e così via. A questo punto possiamo dare la seguente definizione Definizione 1.1. Dato un numero intero positivo N, tale numero nel sistema decimale si rappresenta nel seguente modo N = A n 10 n + A n 1 10 n 1 +... + A 0 10 0 con 0 < A n < 10 Da questa definizione possiamo quindi motivare il perché tale sistema di numerazione viene chiamato decimale: i numeri così composti sono generati da somme di potenze del 10 ; ecco che tale sistema viene anche chiamato sistema a base 10. 1.2 Sistema binario Possiamo generalizzare questo processo e pensare che sistemi di numerazione diversi utilizzino basi diverse per comporre numeri. Notevole importanza riveste il sistema di numerazione in base 2 o sistema binario, per le applicazioni che ha nel funzionamento delle calcolatrici elettroniche e dei computers. Tale sistema impiega come simboli solo due cifre (0, 1): solitamente la registrazione dei dati si ottiene mediante accensione o spegnimento di un circuito elettronico, dove la cifra 0 rappresenta il circuito spento mentre la cifra 1 il circuito acceso. Si consideri ad esempio il numero binario 1001101. Da ora in poi utilizzeremo la seguente notazione: ogni numero 2
sarà delimitato da parentesi tonde e indicheremo a pedice la base di riferimento: quindi nel caso del numero decimale 2478 indicheremo con (2478) 10 mentre nel caso del numero binario 1001101 indicheremo con (1001101) 2. Conversione da numero binario a numero decimale. Qualunque numero binario può essere convertito in decimale come somma di ogni sua cifra per il suo valore posizionale. Essendo un sistema a base 2 il valore posizionale sarà dato da una potenza del 2. Si consideri di nuovo il numero binario (1001101) 2 ; in questo caso la sua conversione in decimale sarà la seguente: (1001101) 2 = 1 2 6 + 0 2 5 + 0 2 4 + 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = (77) 10 Come nel sistema a base 10, le cifre sono moltiplicate per potenze della base di riferimento che in questo caso è la base 2; ogni potenza del 2 viene elevata alla posizione della cifra cui viene sottratto 1. Il vantaggio dell?uso del sistema binario deriva dal fatto che si utilizza il minor numero possibile di simboli; l?inconveniente è dovuto al fatto che è necessario un maggior numero di cifre per rappresentare un numero rispetto alle cifre utilizzate in un qualunque altro sistema di numerazione. Riferendoci all esempio precedente, il numero (77) 10 nel sistema decimale utilizza solo 2 cifre mentre nel sistema binario abbiamo (1001101) 2 che usa 7 cifre. Conversione da numero decimale a numero binario. La conversione da numero decimale a numero binario segue un procedimento più complesso. In particolare possono essere utilizzati due metodi: (i) il metodo delle divisioni successive e (ii) il metodo delle potenze. Nel metodo delle divisioni successive dato un numero decimale A, seguiamo il seguente procedimento 1. dividiamo A per il numero decimale (2) 10 ed otteniamo un quoziente q e un resto r; 2. se il quoziente q ottenuto è diverso da 0 allora divido di nuovo q per (2) 10 per ottenere un nuovo quoziente e un nuovo resto; continuerò a dividere il quoziente via via ottenuto per (2) 10 fino a che q 0. 3. se il quoziente q ottenuto è uguale a 0 allora il calcolo termina. La sequenza dei resti letta dal basso verso l?alto rappresenta così il numero binario, quale conversione del numero decimale A iniziale. Si consideri ad esempio la conversione del numero decimale (107) 10 come mostrato in Figura 1. In questo caso dividendo (107) 10 per (2) 10 otterrò come quoziente q il numero (53) 10 e come resto r il numero (1) 10. Quindi proseguo nel divisero il quoziente per il numero (2) 10 ottenendo un nuovo quoziente (13) 10 e un nuovo resto (1) 10 ; proseguirò fino 3
Figura 1: Conversione di un numero decimale in numero binario ad ottenere il quoziente (0) 10 e il resto (1) 10. A questo punto leggendo i resti dal basso verso l alto otterrò il numero binario (1101011) 2. Il metodo delle potenze invece si basa nell evidenziare le potenze del 2 che sono comprese nel numero decimale da convertire. Prima di tutto bisogna costruire una tabella come segue Potenze del 2... (2 9 ) (2 8 ) (2 7 ) (2 6 ) (2 5 ) (2 4 ) (2 3 ) (2 2 ) (2 1 ) (2 0 ) Valore decimale... 512 256 128 64 32 16 8 4 2 1 Cifre binarie Nella tabella indichiamo nella prima riga le potenze del 2, nella seconda riga il corrispettivo valore decimale e nella terza riga indicheremo quali potenze del 2 sono contenute nel numero decimale da convertire; se una potenza del 2 è contenuta nel numero nella terza riga inseriremo la cifra 1 (in corrispondenza della potenza del 2 contenuta) altrimenti inseriremo la cifra 0. Si consideri di nuovo il numero (107) 10 ; a questo punto bisogna individuare la potenza del 2 più grande contenuta in (107) 10 : tale potenza è (2 6 ) = 64 ((2 7 ) = 128 è più grande di (107) 10 e quindi non può essere contenuta). In questo caso inseriremo un 1 in corrispondenza di tale potenza nella tabella come segue Potenze del 2... (2 9 ) (2 8 ) (2 7 ) (2 6 ) (2 5 ) (2 4 ) (2 3 ) (2 2 ) (2 1 ) (2 0 ) Valore decimale... 512 256 128 64 32 16 8 4 2 1 Cifre binarie 1 A questo punto dobbiamo sottrarre a (107) 10 il valore decimale corrispondete alla potenza del 2 indicata: quindi (107) 10 (64) 10 = (43) 10. Si riparte dal numero così ottenuto (43) 10 e si analizzano tutte le potenze del 2 precedenti (più piccole) a quella trovata all inizio (in questo caso tutte le potenze del 2 più piccole di (2) 6 ); quando si analizza una potenza del 2 se questa è contenuta nel numero decimale corrente allora si inserisce la cifra 1 in tabella e si sottrae al numero decimale corrente il corrispettivo valore decimale della potenza del 2 selezionata. Ad esempio considerando la prima potenza del 4
2 più piccola di (2) 6, che è (2) 5 = (32) 10, questa è contenuta nel numero corrente (43) 10 e quindi inseriremo 1 in corrispondenza. Sottraendo tale potenza otterremo il nuovo numero decimale (43) 10 (32) 10 = (11) 10. Proseguendo ci fermeremo quando otterremo dalla sottrazione il numero 0. Nel caso del numero (107) 10 otterremo la seguente tabella Potenze del 2... (2 9 ) (2 8 ) (2 7 ) (2 6 ) (2 5 ) (2 4 ) (2 3 ) (2 2 ) (2 1 ) (2 0 ) Valore decimale... 512 256 128 64 32 16 8 4 2 1 Cifre binarie 1 1 0 1 0 1 1 Esattamente come nel metodo precedente otteniamo il numero binario (1101011) 2. 2 Operazioni algebriche nel sistema binario Le regole dell?aritmetica sono indipendenti dal sistema di numerazione e quindi sono applicabili al sistema binario. 2.1 Addizione Nel caso dell addizione tra numeri binari bisogna seguire le seguenti regole: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 con riporto di 1 L unico caso particolare è l addizione tra le cifre 1 e 1. In questo caso il risultato è 0 per la stessa posizione delle due cifre ma dando un riporto alla cifra di fianco a sinistra. Questo perché sommando 1 con 1 dobbiamo ottenere un numero più grande, quindi la posizione corrente più a destra darà un unità alla posizione più a sinistra. Si ricorda che secondo la regola posizionale più le cifre sono posizionate a sinistra e maggiore sarà il loro valore. Si consideri la somma tra i due numeri binari (111) 2 e (101) 2. Questa viene eseguita come segue Riporto 1 1 1 1 1 1 + 1 0 1 1 1 0 0 Allineiamo i due numeri partendo da destra verso sinistra; la prima somma è tra le due cifre 1 e 1. In questo caso abbiamo 0 nella posizione corrente con il riporto di 1 nella posizione subito a sinistra. Quindi successivamente abbiamo la somma tra 1 e 0 che fa 1 ma poi dobbiamo sommare questo risultato al riporto ottenuto dalla soma pretendete; quindi 1 + 1 che risulta 0 nella posizione corrente e un riporto di 1 nella posizione di 5
fianco a sinistra. Arriviamo alla somma tra 1 e 1 che fa 0 con riporto di 1 a sinistra; ma in questo caso lo 0 va poi sommato al riporto ottenuto nella precedente somma e quindi 0 + 1 che fa 1 nella posizione corrente. Infine il riporto finale si sommerà a 0 (gli spazi vuoti vanno considerati 0) e quindi 1 + 0 dà 1. Alla dine otterremo il numero binario (1100) 2. 2.2 Sottrazione Nel caso della sottrazione possiamo utilizzare due metodi: (i) il metodo tradizionale e (ii) il metodo del complemento a due. Nel metodo tradizionale nella sottrazione tra numeri binari bisogna seguire le seguenti regole: 0-0 = 0 1-0 = 1 1-1 = 0 0-1 = 1 con il prestito di 1 dalle cifre più a sinistra L unico caso particolare è la sottrazione tra le cifre 0 e 1. In questo caso il risultato è 1 per la stessa posizione delle due cifre ma chiedendo un prestito alla cifre di fianco più a sinistra. Poiché 0 è più piccolo di 1, per poter sottrarre bisogna che lo 0 chiedo un prestito alle cifre più a sinistra che hanno un valore maggiore. Quindi bisogna ricercare il primo 1 più a sinistra e chiedergli l unità. La cifra 1 che presta la sua unità diventerà 0 mentre tutti gli zeri compresi tra la cifra 1 che ha prestato e la cifra 0 che ha chiesto il prestito (tale zero è escluso) diventeranno 1. Si consideri la sottrazione tra i due numeri binari (11000) 2 e (10011) 2. Nel metodo tradizionale questa viene eseguita come segue Prestito 0 1 1 1 1 0 0 0-1 0 0 1 1 0 0 1 0 1 In questo esempio partendo da destra, incontriamo subito il caso 0-1; il risultato nella posizione corrente è 1 ma con la richiesta di un prestito alle cifre più a sinistra. Il prestito dovrà attraversare due zeri fino ad arrivare all 1 in posizione 4. In questo caso la cifra 1 presterà l unità diventando zero e i due zeri compresi tra la cifra 1 che ha prestato e la cifra 0 che ha chiesto il prestito diventeranno 1. Quindi poi proseguendo incontreremo i casi più semplici ottenendo il numero binario finale (101) 2. Nel metodo del complemento a due, il principio è quello di trasformare la sottrazione in una somma binaria (operazione sicuramente più semplice). L idea è quella di convertire direttamente un numero negativo decimale nella sua rappresentazione binaria. Ad esempio si consideri la sottrazione precedente (11000) 2 (10011) 2 che convertita in decimale 6
corrisponde a (24) 10 (19) 10. Possiamo considerare la stessa sottrazione come una somma: (24) 10 +( 19) 10 ; quindi basterebbe convertire i numeri (24) 10 e ( 19) 10 in binario e quindi poi eseguire la somma binaria. Per fare ciò esiste la cosiddetta rappresentazione a complemento a due: questa dato un numero binario (corrispondente ad un numero decimale positivo) genera un numero binario corrispondente al corrispettivo numero decimale negativo. L uso di tale rappresentazione segue i seguenti passi: 1. allineare i due numeri binari (da destra verso sinistra) e riempire nel secondo numero tutti gli spazi con la cifra 0; 2. contare il numero di cifre così ottenute nel secondo numero: tale numero corrisponde al numero di cifre significative n s. Da ora in poi considereremo solamente tale numero di cifre nei numeri binari a seguire partendo da destra verso sinistra; 3. prendere il secondo numero e cambiare ogni cifra 0 in 1 e ogni cifra 1 in 0; 4. prendere il numero così ottenuto al passo precedente (3.) e sommare (tramite l addizione binaria) il numero (1) 2 ; 5. alla fine eseguire la somma tra il primo numero a cui bisognava sottrarre il secondo numero e il numero ottenuto al passo precedente (4.); 6. il risultato finale sarà il numero binario ottenuto dalla somma considerando però solamente le prime n s cifre partendo da destra verso sinistra. Si consideri ad esempio la sottrazione (11000) 2 (1011) 2 e risolviamola col metodo del complemento a due. 1. Prima di tutto dobbiamo allineare i due numeri e riempire nel secondo numero tutti gli spazi con gli zeri come segue 1 1 0 0 0-0 1 0 1 1 2. quindi contiamo il numero di cifre così ottenute dal numero (01011) 2 : abbiamo 5 cifre significative (n s = 5); 3. poi cambiamo ogni 0 in 1 e ogni 1 in 0 ottenendo così (10100) 2 ; 4. sommiamo al numero ottenuto (10100) 2 il numero binario (1) 2 e otterremo (10101) 2 ; 5. eseguiamo la somma tra il primo numero cui dovevamo sottrarre, che è (11000) 2, e sommiamo quindi (10101) 2 ottenuto al passo precedente; 7
Riporto 1 1 1 0 0 0 + 1 0 1 0 1 1 0 1 1 0 1 6. alla fine otterremo il numero (101101) 2. Ma poiché il numero di cifre significative calcolato al passo (2.) è n s = 5, dobbiamo considerare solamente le prime 5 cifre partendo da destra verso sinistra: (1 } 01101 {{} ) 2 e quindi il risultato finale sarà il numero binario (1101) 2, esattamente lo stesso risultato ottenuto eseguendo la sottrazione tramite il metodo tradizionale. 2.3 Moltiplicazione La moltiplicazione tra due numeri binari segue le medesime regole di quella decimale, tenendo presente che 0 0 = 0 1 0 = 0 1 1 = 1 0 1 = 0 Si consideri la moltiplicazione tra i due numeri binari (1011) 2 e (101) 2. Questa viene eseguita come segue 1 0 1 1 1 0 1 1 0 1 1 0 0 0 0 1 0 1 1 1 1 0 1 1 1 In questo corso l operazione di divisione non viene trattata in quanto può essere considerata come una operazione di sottrazioni successive. 8