Operazioni artimetiche Somma binaria Sottrazione binaria La tabella di definizione è: Per effettuare operazioni è necessario conoscere la definizione del comportamento per ogni coppia di simboli Per ogni operazione esiste una tabella 0 0 1 1 1 + + + + + 0 1 0 1 1 = 0 = 1 = 1 = 0 +1= 1 La tabella di definizione è: con riporto di 1 con riporto di 1 1 - 0 0 1 1 = = = = 0 1 0 1 con prestito di 1 dal bit di peso superiore Esempi Esempi Fondamenti di Informatica 0 1 1 0 Fondamenti di Informatica 2 Fondamenti di Informatica 3 Esempio (underflow) Moltiplicazione e divisione Overflow e Underflow Si utilizzano le stesse procedure: Supponiamo di lavorare con interi senza segno Sono condizioni in cui si ha un errore nella rappresentazione del risultato per la moltiplicazione: somma e scorrimento per la divisione: differenza e scorrimento Eseguiamo 12 * 15 15 Se eseguiamo prima la moltiplicazione Generalmente la rappresentazione è formata da un numero finito di bit: se si supera tale limite si ha errore Esempi 12 * 15 = 180 180/15 = 12 ok! Ma se eseguiamo prima la divisione 12/15 = 0 (non posso rappresentare numeri < 1) Fondamenti di Informatica 4 Rappresentazione dei numeri nei calcolatori 5 Numeri positivi Tale limite dipende da: intervallo di variabilità occupazione di memoria Fondamenti di Informatica ……… Fondamenti di Informatica 6 Esistono diverse possibilità: modulo e segno: bit più significativo: positivo (0) e negativo (1) esistono due rappresentazioni per lo ‘0’ complemento a 2: per definizione il complemento a 2 di X è 2 n -X unica rappresentazione dello ‘0’ Esempio: -1 <=> 11111111 Esempio: somma modulo 16 7 0 * 15 = 0 Numeri negativi La rappresentazione di numeri positivi non crea problemi Si può avere overflow se il risultato delle operazioni richiede un numero maggiore di bit di quanto disponibile Esiste un limite al numero di bit impiegati per rappresentare un numero Fondamenti di Informatica Fondamenti di Informatica 8 Fondamenti di Informatica 9 Uso dei numeri negativi Modulo e segno: Sia dato un numero di bit n i numeri che si possono rappresentare sono n nel range [0 - 2 -1] si vuole calcolare A-B n si sostituisce -B con (2 -B) n si ottiene A+(2 -B) La sottrazione si esegue mediante una somma! Complemento a due: la somma algebrica non genera problemi 10 Rappresentazione numeri reali I numeri reali rappresentabili in un calcolatore sono in realtà numeri razionali che approssimano i numeri reali con un certo grado di precisione Per rappresentare un numero reale è sufficiente giustapporre due numeri (un intero e un frazionario) es: 011011.01 Nella notazione in virgola fissa si assume che la posizione della virgola sia fissa in un preciso punto all'interno della sequenza Fondamenti di Informatica 13 Virgola mobile Fondamenti di Informatica 11 Necessita di un segno per la mantissa e uno per l’esponente 16 I numeri negativi hanno il bit più significativo a 1 Fondamenti di Informatica 12 Virgola mobile I numeri reali sono nel range [-∞ ÷ +∞] Talvolta è necessaria una rappresentazione estesa sulla retta dei reali E’ la risposta alla necessitá di manipolare numeri di ordini di grandezza diversi Numeri espressi nella forma: WW X.YYY * 10 con 3 simboli [+/-], X, Y, Z ∈ {0,1,…9} è possibile rappresentare -999 ÷ +999 [+/-] 99 oppure 9 * 10 [+/-] 99 oppure [+/-] 9 * 10 Fondamenti di Informatica X: parte intera Y: parte frazionaria (precisione) W: esponente (ordine di grandezza) 14 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 Fondamenti di Informatica Fondamenti di Informatica 15 Virgola mobile Forma normalizzata: M: mantissa B: base E: esponente i numeri positivi sono rappresentati in modulo e segno i numeri negativi sono rappresentati dal complemento a 2 del corrispondente numero positivo Rappresentazione numeri reali Virgola mobile Nomenclatura: E A= M*B Fondamenti di Informatica Esprimendo i numeri su n bit: Motivazione: la somma algebrica di numeri positivi e negativi può generare problemi servono sistemi hardware specifici per la gestione corretta del formato Fondamenti di Informatica Complemento a 2 Complemento a 2 17 Esempi usando: B=10, 2 cifre all’esponente e 8 alla mantissa: +1 -63517,8 -0,00063517,8 -13 -8,75 * 10 0 1 1 1 01 05 97 88 10000000 63517800 63517800 87500000 Fondamenti di Informatica 18 Virgola mobile Virgola mobile Moltiplicazione e divisione: Approssimazioni: Somma e sottrazione: si moltiplica o si dividono le mantisse in modo consueto si sommano o si sottraggono gli esponenti si normalizza Esempio: 10,4 * 200 = 0 02 10400000 * 0 03 20000000 = 0 05 02080000 = 0 04 20800000 Fondamenti di Informatica Virgola mobile 19 34,56 + 0,005 = 0 02 3456 + 0 98 5000 = 0 02 3456 + 0 02 0000 = 0 02 3456 = 34,56 La precisione è data dal numero di cifre della mantissa: si uguagliano gli esponenti le mantisse vengono sommate aggiustamento in caso di traboccamento Esempio: 10,4 + 2 = 0 02 10400000 + 0 01 20000000 = 0 02 10400000 + 0 02 02000000 = 0 02 12400000 = 12,4 Fondamenti di Informatica Doppia precisione: doppia lunghezza della mantissa (range invariato, precisione raddoppiata) 20 Fondamenti di Informatica 21