Rappresentazione in virgola mobile
5 ottobre 2015
Punto della situazione
Abbiamo 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 (punto
decimale)?
• 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)
Il numero 12345.6789012345 può essere scritto come:
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
…………………
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 normalizzata
La 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
Standard IEEE 754: esponente
• 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]
1 0000000 = - 27 = - 128
1 0000001 = -27 +1 = - 127
………..
Il confronto non risulta naturale!
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
Standard IEEE 754: polarizzazione
• 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)
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
NOTA: 210 = 1024  103
2127 = (210 )12 27  1036 102 = 1038
• Numeri positivi:
minimo: + (1, 00….00)22-126= 2-126 = 2  2-127 
23
 210  10 -38 = 0, 00…………02
Da provare!
Massimo: + (1, 11….11)22+127= 2(1 – 2 -24)  2+127 
 210  10+38 = 2 00.000. …. .000
• Numeri negativi: intervallo simmetrico
Numeri Rappresentabili con 32 bit
(Complemento a 2 e Virgola Mobile)
numeri rappresentabili
-231
231-1
0
numeri negativi
rappresentabili
underflow
overflow
overflow
-(1-2-24) 2128
numeri positivi
rappresentabili
-127
-0.5
-222-127 0
22
0.5
2-127
(1-2-24) 2128
Aritmetica in virgola mobile
Algoritmo
La somma
algebrica è
più
complicata!
Troppo difficile?
• Esiste anche la doppia precisione su 64 bit (1-1152) (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?
Scarica

slides