Numeri in virgola mobile IEEE 754
In questa pagina 8
In questa pagina 4
Virgola fissa e virgola mobile
- Virgola fissa: un numero fissato di bit dopo la virgola (es. 8 bit di cui 4 frazionari: ). Semplice, ma intervallo e precisione sono fissi.
- Virgola mobile: notazione scientifica in base 2, . Con lo stesso numero di bit copre valori molto piccoli e molto grandi, con precisione relativa costante.
Un numero si normalizza spostando la virgola finché resta una sola cifra 1 a sinistra: ; .
Formato IEEE 754
| Formato | Bit | Segno | Esponente | Mantissa | Bias | Cifre decimali |
|---|---|---|---|---|---|---|
| singola precisione | 32 | 1 | 8 | 23 | 127 | ≈ 7 |
| doppia precisione | 64 | 1 | 11 | 52 | 1023 | ≈ 16 |
- L'esponente è in eccesso 127 (vedi Rappresentazione dei numeri interi con segnoInteri con segno su n bit: modulo e segno, complemento a 1, complemento a 2 ed eccesso K; intervalli rappresentabili, calcolo dell'opposto, estensione del segno.Rappresentazione dei numeri interi con segno →): così due float positivi si confrontano come interi senza segno.
- L'1 prima della virgola non si memorizza (bit nascosto): la mantissa ha di fatto 24 bit di precisione.
- Segno e modulo separati: e differiscono solo per il bit .
Da decimale a IEEE 754 (singola)
Esempio: .
- Segno: negativo → .
- Binario: , (vedi Sistemi di numerazione posizionaliNotazione posizionale in base b; conversioni tra base 10, 2, 8 e 16 per interi (divisioni successive) e per parti frazionarie (moltiplicazioni successive); numeri periodici in binario.Sistemi di numerazione posizionali →) → .
- Normalizzo: .
- Esponente: .
- Mantissa: i bit dopo la virgola, completati a 23 con zeri: .
Raggruppando a 4 bit: .
Secondo esempio, numero piccolo: → , , → .
Da IEEE 754 a decimale
Esempio: .
→ esponente ; valore .
Valori speciali
| Esponente | Mantissa | Significato |
|---|---|---|
| denormalizzato: | ||
| qualsiasi | normalizzato | |
| (tutti 1) | (es. , overflow) | |
| NaN (es. , ) |
I denormalizzati riempiono il buco tra e il più piccolo normalizzato (underflow gradualei valori scendono verso zero perdendo precisione un bit alla volta invece di saltare di colpo a zero).
Intervallo e precisione (singola)
- Massimo normalizzato: .
- Minimo normalizzato positivo: .
- Distanza tra due float consecutivi con esponente : . Vicino a 1 è (epsilon di macchinadistanza tra 1 e il float successivo); vicino a è 2: da lì in poi non tutti gli interi sono rappresentabili.
- Overflow: esponente troppo grande → . Underflow: troppo piccolo → denormalizzato o 0.
Arrotondamento e operazioni
- I bit in più si arrotondano; l'arrotondamento predefinito è al più vicino, pari in caso di parità. ha mantissa periodica e viene arrotondato, per cui esattamente.
- Somma: si allinea l'esponente minore al maggiore spostando a destra la sua mantissa, si sommano le mantisse, si rinormalizza e si arrotonda. Con esponenti molto diversi il numero piccolo si perde: in singola .
- Prodotto: si moltiplicano le mantisse e si sommano gli esponenti (togliendo un bias: ).
- La somma non è associativa: può differire da .
Errori tipici
- Dimenticare il bias (scrivere invece di ) o metterlo con il segno sbagliato nella decodifica.
- Includere l'1 nascosto nei 23 bit di mantissa.
- Raggruppare in esadecimale partendo dalla mantissa invece che dal bit di segno: i 32 bit vanno presi nell'ordine e divisi in 8 gruppi da 4.
Versione ripasso
Virgola mobile: , precisione relativa costante. Normalizzare: .
Formato
- Singola: 32 bit = 1 + 8 () + 23 (), bias 127, circa 7 cifre. Doppia: 1 + 11 + 52, bias 1023.
- Esponente in eccesso (Rappresentazione dei numeri interi con segnoInteri con segno su n bit: modulo e segno, complemento a 1, complemento a 2 ed eccesso K; intervalli rappresentabili, calcolo dell'opposto, estensione del segno.Rappresentazione dei numeri interi con segno →): i float positivi si confrontano come interi. L'1 prima della virgola è nascosto.
Conversione
: ; , (Sistemi di numerazione posizionaliNotazione posizionale in base b; conversioni tra base 10, 2, 8 e 16 per interi (divisioni successive) e per parti frazionarie (moltiplicazioni successive); numeri periodici in binario.Sistemi di numerazione posizionali →) ; ; . : , . Inverso: : , esponente , .
Valori speciali
: vale , denormalizzato (underflow gradualei valori scendono verso zero perdendo un bit di precisione alla volta); : , NaN.
Intervallo e operazioni
- Massimo , minimo normalizzato . Distanza tra float consecutivi: ; vicino a 1 è epsilon di macchinadistanza tra 1 e il float successivo ; oltre non tutti gli interi sono rappresentabili.
- Arrotondamento al più vicino, pari in caso di parità; .
- Somma: si allinea l'esponente minore spostando la mantissa, si somma, si rinormalizza (); non è associativa. Prodotto: mantisse moltiplicate, esponenti sommati ().
Errori tipici: dimenticare il bias; contare l'1 nascosto nei 23 bit; raggruppare in esadecimale non da .