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 |