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 è 2 n 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 = -2 n-1-1 limite di overflow = 2 n-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 b n 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 2 n + x. n = 5, x = -12 r(x) = 2 5 + (-12) = 20 = 10100 n = 5, x = 13 r(x) = 2 5 + (13) = 45 = 101101 limite di underflow = -2 n-1 limite di overflow = 2 n-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: -2 L-F-1 <= N <= 2 L-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 * b E Standard P754, N = 1,m * 2 E 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*2 E = -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 * b E m rappresentato in complemento a 2 (segno) m.0 * b E (segno) 0.m * b E (segno) 1.m * b E E rappresentato in modulo e segno, complemento a 2 o notazione polarizzata.