Overflow Overflow traboccamento • Si verifica se il risultato di un’operazione non puo’ essere rappresentato con il numero di bit a disposizione Nel caso di complemento a due (la norma): • Si verifica solo se i segni sono uguali -124+ 10000100 67= 01000011 _____ ________ -57 11000111 70+ 01000110 70= 01000110 ____ ________ 140 10001100 1 Segni discordi. Risultato corretto. Segni concordi. Risultato scorretto (140 è fuori dal range):OVERFLOW. © 1999 Roberto Bisiani Numeri frazionari 2 Fixed point © 1999 Roberto Bisiani Numeri frazionari Floating point come la notazione scientifica esponenziale • Esempio: 1753.427 si puo’ rappresentare come: 0.1753427*104= 1.753427*103=...= 1753427*10- 3 Aumenta la gamma di valori rappresentabili Diminuisce e diventa variabile la precisione: 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 3 © 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 4 © 1999 Roberto Bisiani Normalizzazione Un numero normalizzato ha il significand con una sola cifra prima del punto (virgola) Se la base di rappresentazione e’ due, il numero prima della virgola non puo’ che essere uno • Quindi non occorre rappresentarlo 5 © 1999 Roberto Bisiani Standard floating point 6 I numeri sono sempre normalizzati, cioe’ la parte frazionaria e’ del tipo 1.xxxxxxxxx…. Il primo 1 non viene rappresentato perche’ implicito Lo zero si rappresenta con un esponente e frazione a zero © 1999 Roberto Bisiani Una possibile rappresentazione floating point Standard IEEE 754 • Singola precisione, 32 bit • Doppia precisione, 64 7 © 1999 Roberto Bisiani Rappresentazione dell’esponente Biased, cioe’ “spostata” di meta’ della precisione possibile 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 + 127 • Quindi l’esponente reale –127 viene rappresentato come 0, l’esponente reale 0 come 127 e l’esponente reale 127 come 255 8 Perche’? Per far si’ che due numeri floating point siano confrontabili in grandezza dagli stessi circuiti che confrontano i numeri interi. © 1999 Roberto Bisiani Standard IEEE Singola Doppia precisione Numero di bit nel segno 1 1 Numero di bit nell’esponente 8 11 Numero di bit nella frazione 23 52 Numero di bit, totale 32 64 Rappresentazione dell’esponente eccesso 127 eccesso 1023 Campo dell’esponente da -126 a +127 da -1022 a +1023 Numero normalizzato più piccolo 2-126 2-1022 Numero normalizzato più grande appr. 2128 appr. 21024 Gamma di rappresentati numeri decimali appr. 10-38 a 1038 Numero più piccolo denormalizzato 9 appr. 10-45 appr. 10-308 a 10308 appr. 10-324 © 1999 Roberto Bisiani Esempio 10 A cosa corrisponde questo numero? Il bit di segno è 1, mentre il campo esponente contiene 129 e il campo significant contiene 1x2^-2: il numero corrispondente alla notazione è quindi -1.01 x 2^2, che corrisponde al numero decimale -1.25 x 4=-5.0 © 1999 Roberto Bisiani Esempio Il numero -0.75 (in base 10) è anche -3/4 (in base 10) oppure -3/22. La sua rappresentazione binaria è quindi -0.11. 0 Nella notazione scientifica il valore è -0.11 x 2 , mentre la notazione normalizzata è -1.1 x 2-1. La rappresentazione generale per un numero in precisione singola è (-1)S X (1+significand) X 2(exponent-bias) 11 Il numero e’ rappresentato come: © 1999 Roberto Bisiani Approssimazione 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 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 12 © 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 13 © 1999 Roberto Bisiani Moltiplicazione e divisione 14 I numeri non devono essere denormalizzati Gli esponenti vengono sommati (o sottratti) Eventuali overflow si sistemano aggiustando gli esponenti © 1999 Roberto Bisiani Configurazioni speciali 15 La rappresentazione standard non prevede alcuni casi particolari che sono utili Denormalizzati: bit prima della virgola e’ zero, rendono meno rapida la transizione tra il piu’ piccolo numero normalizzato rappresentabile e lo zero © 1999 Roberto Bisiani