Modulo 1: Le I.C.T. : La codifica Digitale dei Numeri CODIFICA DIGITALE DEI NUMERI Prof. Alberto Postiglione Corso di Informatica Generale (AA 07-08) Corso di Laurea in Scienze della Comunicazione Università degli Studi di Salerno Sistema di numerazione arabo Sistemi Posizionali: Base e Alfabeto Il sistema di numerazione che utilizziamo si dice arabo. È decimale (o in base 10): esso rappresenta i numeri tramite sequenze di cifre che vanno da 0 a 9 (dieci cifre). È posizionale: il peso attribuito ad ogni cifra è funzione della posizione che occupa. I sistemi posizionali consentono di rappresentare numeri grandi con un numero limitato di cifre di svolgere calcoli in modo semplice ed efficiente. Esistono anche # 3 sistemi additivi, in cui ogni unità è rappresentata da un unico simbolo sistemi non (completamente)-posizionali come quello romano. Prof Alberto Postiglione Università Salerno I sistemi di numerazione posizionale sono caratterizzati da una base b e un alfabeto a: Base (b): è il numero degli elementi che compongono l alfabeto. # 4 Ad esempio, nel sistema decimale, b=10. Alfabeto (a): è l insieme delle cifre disponibili per esprimere i numeri. A ogni cifra corrisponde un valore compreso tra 0 e (b-1). Ad esempio, nel sistema decimale, a={0,1,2,3,4,5,6,7,8,9} Esempi: Base 8 (ottale) a={0,1,2,3,4,5,6,7} Base 16 (esadecimale) a={0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f} Prof Alberto Postiglione Università Salerno Sistema di Numerazione decimale Sistema di Numerazione binario Rappresentazione posizionale in base 10: Simboli uguali assumono valori diversi a seconda della loro posizione nel numero Somma delle potenze del 10 pesate per il valore del simbolo corrispondente La notazione posizionale può essere usata in qualunque altro sistema di numerazione (con base diversa da 10) In analogia con il caso decimale, la sequenza c n c n-1 c n-2 c 1 c 0 (con c i che vale 0 o 1) rappresenta il numero c n 2 n + c n-1 2 n-1 + c n-2 2 n-2 + + c 1 2 1 + c 0 2 0 Ad esempio, la sequenza binaria 1110 rappresenta il numero 14 1x2 3 + 1x2 2 + 1x2 1 + 0x2 0 1x8 + 1x4 + 1x2 + 0x1 = 14 In un calcolatore viene solitamente usata la base 2. # 5 Prof Alberto Postiglione Università Salerno Per evitare ambiguità si usa la notazione 1110 2 = 14 10 # 6 Prof Alberto Postiglione Università Salerno 1
Sistema di Numerazione binario Sistema di Numerazione binario # 7 Prof Alberto Postiglione Università Salerno # 8 Prof Alberto Postiglione Università Salerno BINARIO DECIMALE: Conversione binario decimale Basta rappresentare usando una rappresentazione decimale come potenze di B e poi fare i conti. Esempi 1001 2 1x2 3 + 0x2 2 + 0x2 1 + 1x2 0 = 1x8 + 0x4 + 0x2 + 1x1 = 9 10 1010 2 1x2 3 + 0x2 2 + 1x2 1 + 0x2 0 = 1x8 + 0x4 + 1x2 + 0x1 = 10 10 Conversione decimale binario DECIMALE BINARIO 11510 = 11100112: 115 2 1 57 2 d0 1 28 2 0 14 d1 2 d2 d3 d4 d5 0 7 2 1 3 2 1 1 2 1 0 d6 # 9 Prof Alberto Postiglione Università Salerno # 10 Prof Alberto Postiglione Università Salerno Esercizi (in aula) Soluzioni (in aula) Trasformare in decimale i seguenti numeri binari: 10001 2 100111 2 100011 2 Trasformare in binario i seguenti numeri decimali: 15 10 17 10 35 10 10001 2 =17 10 100111 2 =39 10 100011 2 =35 10 15 10 =1111 2 17 10 =10001 2 35 10 =100011 2 # 11 Prof Alberto Postiglione Università Salerno # 12 Prof Alberto Postiglione Università Salerno 2
Esercizi (a casa) Soluzioni (a casa) Trasformare in decimale i seguenti numeri binari: 1101001 2 110111 2 100000 2 Trasformare in binario i seguenti numeri decimali: 39 10 42 10 95 10 1101001 2 = 105 10 110111 2 = 55 10 100000 2 =32 10 39 10 =100111 2 42 10 =101010 2 95 10 =1011111 2 # 13 Prof Alberto Postiglione Università Salerno # 14 Prof Alberto Postiglione Università Salerno Operazioni binarie ARITMETICA BINARIA Per effettuare operazioni è necessario conoscere la definizione del comportamento per ogni coppia di simboli Per ogni operazione esiste una tabella Overflow traboccamento Si verifica se il risultato di un operazione non puo essere rappresentato con il numero di bit a disposizione # 16 Prof Alberto Postiglione Università Salerno Somma Binaria Somma Binaria La tabella di definizione è: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 con riporto di 1 1 + 1 + 1 = 1 con riporto di 1 Esempio: sommare 100111 2 e 10011 2 Verifica: 100111+ 10011= 111010 100111 2 39 10 10011 2 19 10 111010 2 58 10 Esempio: (11011) 2 +(00110) 2 11011 + (27) 00110 = (6) 100001 (33) # 17 Prof Alberto Postiglione Università Salerno # 18 Prof Alberto Postiglione Università Salerno 3
Sottrazione Binaria Sottrazione Binaria La tabella di definizione è: 0-0 = 0 1-0 = 1 1-1 = 0 0-1 = 1 con prestito di 1 dal bit di peso superiore Esempio 1100 - (12) 0011 = (3) 1001 (9) Esempio: (11011) 2 -(110) 2 11011 - (27) 110 = (6) 10101 (21) Esempio: (1001) 2 -(111) 2 1001 - (9) 111 = (7) 10 (2) # 19 Prof Alberto Postiglione Università Salerno # 20 Prof Alberto Postiglione Università Salerno Moltiplicazione binaria Divisione di numeri binari Si utilizza la stessa tecnica usata anche per i numeri in base 10 (somma e scorrimento): Esempio: A =(1011) 2 =(11) 10 B = (1101) 2 =(13) 10 A*B= 1011 * 1101 = 1011 + 0000 + 1011 + 1011 = -------------- 10001111 # 21 Prof Alberto Postiglione Università Salerno # 22 Prof Alberto Postiglione Università Salerno Esercizi (in aula) Soluzioni (in aula) Effettuare le seguenti somme binarie: 11001 2 +1010 2 1001 2 +1101 2 1010 2 +11010 2 Effettuare le seguenti sottrazioni binarie: 11001 2-1010 2 1110 2-1101 2 11010 2-10111 2 Effettuare le seguenti moltiplicazioni binarie: 110 2 *101 2 11010 2 *111 2 11001 2 *1010 2 11001 2 +1010 2 = 100011 2 1001 2 +1101 2 = 10110 2 1010 2 +11010 2 = 100100 2 11001 2-1010 2 = 1111 2 1110 2-1101 2 =1 2 11010 2-10111 2 = 11 2 110 2 *101 2 = 11110 2 11010 2 *111 2 = 10110110 2 11001 2 *1010 2 = 11111010 2 Effettuare le seguenti divisioni binarie: 11000 2 /1000 2 1110 2 /1101 2 11010 2 /11 2 # 24 11000 2 /1000 2 =11 2 con resto 0 2 1110 2 /1101 2 =1 2 con resto 1 2 11010 2 /11 2 = 1000 2 con resto 10 2 # 23 Prof Alberto Postiglione Università Salerno Prof Alberto Postiglione Università Salerno 4
Esercizi (a casa) Soluzioni (a casa) Effettuare le seguenti somme binarie: 1111 2 +111 2 1101 2 +1101 2 1011 2 +11110 2 Effettuare le seguenti sottrazioni binarie: 1110 2-111 2 11110 2-1101 2 1000 2-1 2 Effettuare le seguenti moltiplicazioni binarie: 111 2 *11 2 1010 2 *1010 2 101 2 *1001 2 1111 2 +111 2 = 10110 2 1101 2 +1101 2 = 11010 2 1011 2 +11110 2 = 101001 2 1110 2-111 2 = 111 2 11110 2-1101 2 = 10001 2 1000 2-1 2 = 111 2 111 2 *11 2 = 10101 2 1010 2 *1010 2 = 1100100 2 101 2 *1001 2 = 101101 2 Effettuare le seguenti divisioni binarie: 1001 2 /11 2 =11 2 con resto 0 2 1111 2 /111 2 =10 2 con resto 1 2 10000 2 /10 2 = 1000 2 con resto 0 2 1001 2 /11 2 1111 2 /111 2 10000 2 /10 2 # 26 # 25 Prof Alberto Postiglione Università Salerno Prof Alberto Postiglione Università Salerno Numeri frazionari: Floating Point NUMERI FRAZIONARI E la risposta alla necessità di manipolare Numeri reali Numeri troppo grandi per essere rappresentati come interi. Numeri espressi nella forma: x.yyy * 10 w X: parte intera Y: parte frazionaria W: esponente Esempio: 1234.567 si puo rappresentare come: 0.1234567 *10 4 oppure come 1.234567 *10 3 oppure come 1234567.0 *10-3 # 28 Prof Alberto Postiglione Università Salerno Numeri frazionari: Floating Point Numeri frazionari: Floating Point Nomenclatura: A = M * B E M: mantissa B: base E: esponente Forma normalizzata: si sceglie di avere la seguente relazione: 0 M < 1 l esponente è espresso in complemento a B (talvolta in eccesso 127 ) la mantissa è espressa in modulo e segno Necessita di un segno per la mantissa e uno per l esponente La precisione è data dal numero di cifre della mantissa: Doppia precisione: doppia lunghezza della mantissa (range invariato, precisione raddoppiata) Standard IEEE 754 Singola precisione, 32 bit Doppia precisione, 64 # 29 Prof Alberto Postiglione Università Salerno # 30 Prof Alberto Postiglione Università Salerno 5
Codifica dei Numeri OVERFLOW Le macchine hanno vincoli spaziali: è necessario conoscere il massimo valore rappresentabile: con n bit si può rappresentare al massimo il numero 2 n -1 I numeri interi sono rappresentati come successioni di byte (2, 4 e 8 byte) # 32 Prof Alberto Postiglione Università Salerno Codifica dei Numeri Overflow Molte macchine usano interi a 32 bit (4 byte): 1 bit per rappresentare se il numero è positivo o negativo (segno), gli altri 31 per le cifre binarie del numero con 32 bit si possono gestire numeri compresi tra -2.147.483.648 e 2.147.483.647 Word: [0, 2 16-1] Double-word: [0, 2 32-1] Quad-word: [0, 2 64-1] La rappresentazione di un numero è formata da un numero finito di bit: se si supera tale limite si ha errore Sono condizioni in cui si ha un errore nella rappresentazione del risultato Overflow traboccamento Si verifica se il risultato di un operazione non puo essere rappresentato con il numero di bit a disposizione # 33 Prof Alberto Postiglione Università Salerno # 34 Prof Alberto Postiglione Università Salerno Overflow -124 + 10000100 + 67 = 01000011 = Segni discordi. -57 11000111 Risultato corretto 70 + 01000110 + Segni concordi. 70 = 01000110 = 140 = 10001100 Risultato scorretto (140 è fuori dal range): OVERFLOW. # 35 Prof Alberto Postiglione Università Salerno 6