Tale standard ha diversi formati:
Nota: per questo in alcuni linguaggi di programmazione si distinguono i float, o i double, ...
La mantissa viene espressa in complemento a 2, mentre l'esponente ha notazione in eccesso.
La mantissa è composta solo della parte frazionaria, poiché la parte intera è sempre 1 quando è normalizzata.
1 bit | 8 bit | 23 bit |
---|---|---|
segno | esponente in eccesso 127 (-126,127) | mantissa |
Il range di una rappresentazione in eccesso (vedi gli appunti riguardo la notazione in eccesso) dovrebbe essere (-128, 127) come mai in questo caso è (-126, 127)? Il fatto è che due bit sono riservati alla rappresentazione di casi particolari come NaN
(Not-a-Number) e simili.
1 bit | 11 bit | 52 bit |
---|---|---|
segno | esponente eccesso 1023 (-1022,1023) | mantissa |
Il discorso fatto per l'eccesso dell'esponente dei floating point in single precision vale anche per i double e anche gli altri.
Dovendo convertire un numero come 432 in questa notazione floating point si procede in modo simile a quanto fatto per le altre codifiche:
Si raccolgono i resti delle divisioni successive per 2 di 432
Il numero
Che può essere scritto come
Quindi il numero in floating point è il seguente:
Segno | Esponente eccesso 127: 8 bit | Mantissa: 23 bit |
---|---|---|
0 | 10000111 | 10110000000000000000000 |
Come abbiamo detto prima alcuni valori come NaN
oppure l'infinito sono rappresentati tramite dei valori speciali nella codifica dello standard IEEE 754:
Valore | Valore esponente | Valore mantissa: M |
---|---|---|
Infinito (speciale) | 255 | M = 0 |
NaN (speciale) | 255 | M |
Numero normalizzato | 0 < esponente < 255 | qualunque |
Numero denormalizzato | esponente = 0 | M |
Zero | esponente = 0 | M = 0 |