rappresentazione in virgola mobile - unisa · abbiamo visto le rappresentazioni dei numeri:...
TRANSCRIPT
Rappresentazione in virgola mobile
5 ottobre 2015
Punto della situazioneAbbiamo visto le rappresentazioni dei numeri:
• Sistema posizionale pesato per interi positivi (nella varie basi)
• Sistema posizionale pesato per numeri con la virgola positivi (frazioni proprie)
• Modulo e segno per interi col segno
• Complemento a 2 per interi col segno
Adesso rappresentazione in virgola mobile per numeri reali/con virgola e segno (con troncamento)
Numeri Reali
• Frazioni proprie
• Potrebbero essere rappresentati in binario puro
1001.1010 = 23 + 20 +2-1 + 2-3 =9.625
• Ma dove è posizionata la virgola (puntodecimale)?
• In una posizione fissata (virgola fissa)?Soluzione con molti limiti
• In una posizione mobile (virgola mobile)?Come facciamo ad indicare dove si trova?
Rappresentazione in Virgola Mobile (b=10)
12345.6789012345 * 100
1234.56789012345 * 101
123.456789012345 * 102
12.3456789012345 * 103
1.23456789012345 * 104
0.123456789012345 * 105
………….
12345.6789012345 * 100
123456.789012345 * 10-1
1234567.89012345 * 10-2
12345678.9012345 * 10-3
123456789.012345 * 10-4
1234567890.12345 * 10-5
…………………
Il numero 12345.6789012345 può essere scritto come:
Rappresentazione in Virgola Mobile (b=2)
Il numero 10111. 1101011101 può essere scritto come:
10111.1101011101 * 20
1011.11101011101 * 21
101.111101011101 * 22
10.1111101011101 * 23
1.01111101011101 * 24
0.101111101011101 * 25
……
10111.1101011101 * 20
101111.101011101 * 2-1
1011111.01011101 * 2-2
10111110.1011101 * 2-3
101111101.011101 * 2-4
1011111010.11101 * 2-5
……
Notazione scientifica• Notazione scientifica in base 10:
N= (-1) s M 10exp
s=segno positivo se s=0, negativo se s=1
M=Mantissa numero decimale con parte intera uguale a 0
exp = esponente opportuno (intero)Esempi: +75,221 = (-1) 0 0,75221 102
- 7522,1 = (-1) 1 0,75221 104
+0,0089= (-1) 0 0,89 10-2
• Notazione scientifica in base 2:
N= (-1) s M 2exp
s=segno positivo se s=0, negativo se s=1
M=Mantissa numero decimale con parte intera uguale a 0
exp = esponente opportuno (intero)Esempi: +11,001 = (-1) 0 0,11001 22
- 1100,1 = (-1) 1 0,11001 24
+0,0011= (-1) 0 0,11 2-2
Notazione scientifica normalizzataLa rappresentazione in virgola mobile che adotteremo si basa sulla notazione scientifica normalizzata
• Notazione scientifica normalizzata in base 2:
N= (-1) s M 2exp
s = segno positivo se s=0, negativo se s=1
M = Mantissa numero decimale con parte intera uguale a 1
exp = esponente opportuno (intero)
Esempi: +11,001 = (-1) 0 1,1001 21
- 1100,1 = (-1) 1 1,1001 23
+0,0011= (-1) 0 1,1 2-3
• Suddivide i 32 bit (singola precisione) in:– 1 bit per il segno
– 8 bit per rappresentare l’esponente
– 23 bit per rappresentare la mantissa
Standard IEEE 754: segno
• Il segno è dato da (-1)s
• Analogamente alla rappresentazione in complemento a 2:
Il bit s=0 rappresenta numeri positivi
Il bit s=1 rappresenta numeri negativi
singola precisione: Mantissa
• Vogliamo usare gli 8 bit per rappresentare esponenti interi negativi e positivi
• Se usassimo la rappresentazione in complemento a 2, con 8 bit potremmo rappresentare: [-128, +127]
Standard IEEE 754: esponente
1 0000000 = - 27 = - 128
1 0000001 = -27 +1 = - 127………..
1 1111110 =-2
1 1111111 =-1
0 0000000 = 0
0 0000001 = +1
0 0000010 = +2….
0 1…10 = 27 – 2= +126
0 1 …11 = 27 - 1 =+127
Il confronto non risulta naturale!
• Vogliamo rappresentare esponenti interi negativi e positivi
• Usiamo la rappresentazione in binario; con 8 bit potremmo rappresentare: [0, +255]
• 0 = 000000 lo riserviamo a zero• 255 = 11111111 a infinito e NaN• Gli altri interi da [1, +254] li usiamo per
rappresentare l’intervallo [-126, +127] sottraendo 127 (polarizzazione)
(per averne circa metà positivi e metà negativi)
Standard IEEE 754: polarizzazione
Campo esponente (8bit)
• 00000000 = 0 RISERVATO (per lo 0)
• 00000001 = 1 rappresenta 1-127 =-126
• 00000010 = 2 rappresenta 2-127 =-125
• 00000011 = 3 rappresenta 3-127=-124
• …………………
• 11111101 = +253 rappresenta 253-127=+126
• 11111110 = +254 rappresenta 254-127=+127
• 11111111 = +255 RISERVATO (ad infinito e NaN)
: esempi
Numeri rappresentabili in FP
• Numeri positivi:
minimo: + (1, 00….00)22-126= 2-126 = 2 2-127
210 10 -38 = 0, 00…………02
Massimo: + (1, 11….11)22+127= 2(1 – 2 -24) 2+127
210 10+38 = 2 00.000. …. .000
• Numeri negativi: intervallo simmetrico
23
NOTA: 210 = 1024 103
2127 = (210 )12 27 1036 102 = 1038
Da provare!
Numeri Rappresentabili con 32 bit (Complemento a 2 e Virgola Mobile)
0 0.5 2-127-0.5 2-127 (1-2-24) 2128-(1-2-24) 2128
0 231-1-231
numeri rappresentabili
numeri negativi
rappresentabili
numeri positivi
rappresentabili
overflowoverflow
underflow
22-127-22-127
Aritmetica in virgola mobile
Algoritmo
La somma algebrica è più complicata!
Troppo difficile?
• Esiste anche la doppia precisione su 64 bit (1-11-52) (double in C)
• Non studieremo moltiplicazione e divisione• Le istruzioni MIPS che studieremo tratteranno
numeri rappresentati in complemento a 2. Per esempio: add, sub,…
• Il MIPS supporta anche il formato IEEE 754 a singola (e doppia) precisione con istruzioni particolari: Per esempio: add.s, sub.s,…
Riepilogo e riferimenti
• I numeri in virgola mobile e lo standard IEEE 754 a singola precisione
• Somma in virgola mobile: [PH] par. 3.5 (fino a ‘La somma in virgola mobile’)
• Abbiamo finito le rappresentazioni dell’informazione. Dalla prossima volta: algebra di Boole e circuiti combinatorici
• Faremo un test sul programma fin qui svolto, cioè tutte le rappresentazioni e conversioni studiate.
Venerdì 9 ottobre?