Rappresentazione dei Numeri

Rappresentazione dei Numeri
Rappresentazione dei Numeri
• Il sistema numerico binario è quello che
meglio si adatta alle caratteristiche del
calcolatore
• Il problema della rappresentazione consiste nel
trovare un metodo per codificare i numeri
utilizzando le risorse a disposizione
– Dimensioni della memoria a disposizione
– Numeri razionali o periodici
Numeri grandi e piccoli
• Le dimensioni della memoria sono sempre
finite
• E’ possibile rappresentare solo i numeri
compresi in un intervallo
– Underflow: limite inferiore dei numeri
rappresentabili
– Overflow: limite superiore
Numeri frazionari e periodici
• I numeri frazionari e/o periodici sono composti
da un numero infinito di cifre
• È possibile rappresentare solo una parte del
numero (la più significativa)
– Troncamento: errore compiuto eliminando parte
del numero
Numeri interi Positivi
• La dimensione della memoria disponibile è
misurata in bit
• Il massimo numero rappresentabile in n bit è 2n
• Se, in conseguenza di operazioni aritmetiche,
il numero diventa “troppo grande” vengono
rappresentate le cifre meno significative!
• 1101 + 1111 = 1100 !!!!!
Numeri con segno
• Le rappresentazioni dei numeri interi relativi
sono:
– Modulo e segno
– Complemento a 2
– Complemento ad 1
• Sono possibili anche altre rappresentazioni
Modulo e segno
• Problema: rappresentare un numero intero x con
segno avendo a disposizione n bit
• Soluzione: il bit di peso maggiore (quello più a
sinistra) si utilizza per rappresentare il segno, i
rimanenti n-1 bit rappresentano il modulo
n = 5, x = -12 r(x) = 11100
n = 5, x = 13 r(x) = 01101
• limite di underflow = -2n-1 -1
• limite di overflow = 2n-1 -1
• Due rappresentazioni per lo zero !!
Complemento a 2
• Definizione: dato un numero x ed n cifre si definisce
complemento alla base b il numero bn – x
• Problema: rappresentare un numero intero x con
segno avendo a disposizione n bit
• Soluzione: il numero viene rappresentato usando le
prime n cifre (a destra) del numero 2n + x.
n = 5, x = -12 r(x) = 25 + (-12) = 20 = 10100
n = 5, x = 13 r(x) = 25 + (13) = 45 = 101101
• limite di underflow = -2n-1
• limite di overflow = 2n-1 -1
• Unica rappresentazione per lo zero !!
Operazioni e Rappresentazione
• L’algoritmo risolutivo della somma algebrica
usando la rappresentazione in modulo e segno
è più complesso
– Se i due numeri hanno lo stesso segno si sommano
i valori assoluti
– Se i due numeri hanno segno diverso devo
scegliere quello di modulo maggiore e sottrarre il
secondo
– Se il segno del maggiore …
Operazioni e Rappresentazione (cont.)
• Nel caso della rappresentazione in
complemento a 2 la somma di numeri relativi
si ottiene sommando le loro rappresentazioni
• L’operazione di complemento a 2 è semplice
Numeri decimali
• Rappresentazione in virgola fissa
– Il punto decimale occupa una posizione prefissata.
– Il segno è rappresentato dal bit di peso maggiore
• Limiti di overflow: -2L-F-1 <= N <= 2L-F-1-1
• Errore di troncamento: |e| < 2-F
Numeri decimali
• Rappresentazione in virgola mobile
– La posizione del punto varia dinamicamente
– Ogni numero reale N è rappresentato dalla coppia
(m,E) dove N = m * bE
– Standard P754, N = 1,m * 2E
• 1 bit di segno
• 23 bit per la mantissa (eliminando la prima cifra)
• 8 bit per l’esponente (eccesso 127)
Esempio
• -13.25
– Convertiamo il numero in base binaria -1101.01
– Rappresentiamo il numero nella forma 1.m*2E =
-1.10101 * 2 3
– Esprimiamo l’esponente in notazione polarizzata
(o eccesso 127) E = 130
– Rappresentiamo il numero supponendo di avere a
disposizione 32 bit.
Operazioni in virgola mobile
• Per sommare correttamente i due numeri, si
deve allineare la virgola del numero che ha
l'esponente più piccolo. Quindi il primo passo
esegue lo scalamento a destra della mantissa
del numero più piccolo, fino a che il suo
esponente non coincide con quello del numero
più grande.
• Si esegue la somma delle mantisse
• Se la somma ottenuta non è in notazione scientifica
normalizzata è necessario correggerla. Quindi a valle
della somma può essere necessario eseguire un suo
scalamento per portarla alla forma normalizzata, con
un opportuno aggiustamento dell'esponente. Ogni
volta che l'esponente è incrementato o decrementato,
si deve controllare se si è verificato un overflow o
underflow, cioè ci si deve accertare che l'esponente
continui ad essere rappresentabile all'interno del suo
campo.
• Arrotondamento della mantissa: si tronca il
numero se la cifra a destra del punto desiderato
è compresa tra 0 e 4, e si somma 1 alla cifra se
il numero a destra è compreso tra 5 e 9. Esiste
un caso sfortunato per l'arrotondamento,
consiste nel dover sommare un 1 ad una
stringa di 9: la somma può non essere più
normalizzata ed occorre eseguire di nuovo il
passo 3.
Altro
• Possibili alternative allo standard
m.0 * bE m rappresentato in complemento a 2
(segno) m.0 * bE
(segno) 0.m * bE
(segno) 1.m * bE
E rappresentato in modulo e segno, complemento a 2
o notazione polarizzata.