150 likes | 410 Views
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.
E N D
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 Segni discordi. _____ ________ Risultato corretto. -57 11000111 70+ 01000110 Segni concordi. 70= 01000110 Risultato scorretto (140 è fuori dal ____ ________ range):OVERFLOW. 140 10001100
Numeri frazionari • Fixed point
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
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
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
Standard floating point • 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
Una possibile rappresentazione floating point • Standard IEEE 754 • Singola precisione, 32 bit • Doppia precisione, 64
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 • Perche’? Per far si’ che due numeri floating point siano confrontabili in grandezza dagli stessi circuiti che confrontano i numeri interi.
Esempio • 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
Esempio • Il numero -0.75 (in base 10) è anche -3/4 (in base 10) oppure -3/22. • La sua rappresentazione binaria è quindi -0.11. • Nella notazione scientifica il valore è -0.11 x 20, 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) • Il numero e’ rappresentato come:
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
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
Moltiplicazione e divisione • I numeri non devono essere denormalizzati • Gli esponenti vengono sommati (o sottratti) • Eventuali overflow si sistemano aggiustando gli esponenti
Configurazioni speciali • 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