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
Scarica

file non compresso