1 © 1999 Roberto Bisiani Overflow n Overflow traboccamento Si verifica se il risultato di un’operazione non puo’ essere rappresentato con il numero di bit a disposizione n Nel caso di complemento a due (la norma): Si verifica solo se i segni sono uguali = Segni discordi. _____ ________ Risultato corretto Segni concordi. 70= Risultato scorretto (140 è fuori dal ____ ________ range):OVERFLOW
2 © 1999 Roberto Bisiani Numeri frazionari n Fixed point
3 © 1999 Roberto Bisiani Numeri frazionari n Floating point come la notazione scientifica esponenziale Esempio: si puo’ rappresentare come: *10 4 = *10 3 =...= * n Aumenta la gamma di valori rappresentabili n Diminuisce e diventa variabile la precisione: n Non tutti i numeri sono rappresentabili con una certa rappresentazione 10/3 = 3.33????? In base tre il risultato dell’operazione e’ rappresentabile: 101/10 = 10.1
4 © 1999 Roberto Bisiani Gamma di rappresentazione Le possibilita’ di rappresentare un certo valore non sono uniformi in tutta la gamma di valori rappresentabili. Es. Esponente da –100 a +100 “significand” di 10 cifre
5 © 1999 Roberto Bisiani Normalizzazione n Un numero normalizzato ha il significand con una sola cifra prima del punto (virgola) n Se la base di rappresentazione e’ due, il numero prima della virgola non puo’ che essere uno Quindi non occorre rappresentarlo
6 © 1999 Roberto Bisiani Standard floating point n I numeri sono sempre normalizzati, cioe’ la parte frazionaria e’ del tipo 1.xxxxxxxxx…. n Il primo 1 non viene rappresentato perche’ implicito n Lo zero si rappresenta con un esponente e frazione a zero
7 © 1999 Roberto Bisiani Una possibile rappresentazione floating point n Standard IEEE 754 Singola precisione, 32 bit Doppia precisione, 64
8 © 1999 Roberto Bisiani Rappresentazione dell’esponente n Biased, cioe’ “spostata” di meta’ della precisione possibile n Esempio: se l’esponente e’ di 8 bit invece di rappresentare l’esponente in complemento (da –128 a +127) lo si rappresenta come: Esponente reale Quindi l’esponente reale –127 viene rappresentato come 0, l’esponente reale 0 come 127 e l’esponente reale 127 come 255 n Perche’? Per far si’ che due numeri floating point siano confrontabili in grandezza dagli stessi circuiti che confrontano i numeri interi.
9 © 1999 Roberto Bisiani Standard IEEE SingolaDoppia precisione Numero di bit nel segno1 1 Numero di bit nell’esponente8 11 Numero di bit nella frazione23 52 Numero di bit, totale32 64 Rappresentazione dell’esponenteeccesso 127 eccesso 1023 Campo dell’esponenteda -126 a +127 da a Numero normalizzato più piccolo Numero normalizzato più grandeappr appr Gamma di numeri decimali rappresentati appr a appr a Numero più piccolo denormalizzatoappr appr
10 © 1999 Roberto Bisiani Esempio n A cosa corrisponde questo numero? n Il bit di segno è 1, mentre il campo esponente contiene 129 e il campo significant contiene 1x2^-2: il numero corrispondente alla notazione è quindi x 2^2, che corrisponde al numero decimale x 4=-5.0
11 © 1999 Roberto Bisiani Esempio n Il numero (in base 10) è anche -3/4 (in base 10) oppure -3/2 2. n La sua rappresentazione binaria è quindi n Nella notazione scientifica il valore è x 2 0, mentre la notazione normalizzata è -1.1 x n La rappresentazione generale per un numero in precisione singola è (-1) S X (1+significand) X 2 (exponent-bias) n Il numero e’ rappresentato come:
12 © 1999 Roberto Bisiani Approssimazione n La rappresentazione floating point permette di rappresentare numeri grandi e piccoli ma non sempre permette di rappresentare tutte le cifre significative che sono il risultato di un’operazione aritmetica n In questo caso si approssima il risultato Semplicemente troncando delle cifre – L’errore e’ al massimo uguale al valore della cifra meno significativa Troncando e modificando le cifre rimaste per minimizzare l’errore – Aggiungendo o meno 1 alla cifra meno significativa a seconda che la cifra eliminata sia maggiore o minore della meta’ – L’errore in questo caso e’ la meta’ della cifra meno significativa – Se la cifra troncata e’ esattamente la meta’ non e’ facile scegliere Se si sceglie sempre in un modo si rischia di aumentare gli errori
13 © 1999 Roberto Bisiani Somma e sottrazione I numeri devono essere denormalizzati per avere esponente uguale – Se I numeri sono di grandezza molto diversa la denormalizzazione di uno dei numeri puo’ richiedere una sostanziale perdita di precisione (digit “escono” da destra) L’operazione viene fatta sul significand Un eventuale overflow puo’ essere gestito sistemando gli esponenti
14 © 1999 Roberto Bisiani Moltiplicazione e divisione n I numeri non devono essere denormalizzati n Gli esponenti vengono sommati (o sottratti) n Eventuali overflow si sistemano aggiustando gli esponenti
15 © 1999 Roberto Bisiani Configurazioni speciali n La rappresentazione standard non prevede alcuni casi particolari che sono utili n Denormalizzati: bit prima della virgola e’ zero, rendono meno rapida la transizione tra il piu’ piccolo numero normalizzato rappresentabile e lo zero