IEEE 754

Tale standard ha diversi formati:

  • half precision (16 bit)
  • single precision (32 bit)
  • double precision (64 bit)
  • quad precision (128 bit)

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.

Single precision
...

1 bit8 bit23 bit
segnoesponente 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.

  • minimo rappresentabile maggiore di zero:
  • massimo rappresentabile: approssimato

Double precision
...

1 bit11 bit52 bit
segnoesponente 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.

  • minimo rappresentabile maggiore di zero:
  • massimo rappresentabile: approssimato

Conversione di un numero
...

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

  • Sappiamo che il segno è quindi è 0
  • L'esponente è che in eccesso 127 (per la rappresentazione in precisione singola) è
  • Mentre la mantissa non è altro che la "parte decimale" del numero , ovvero 1011

Quindi il numero in floating point è il seguente:

SegnoEsponente eccesso 127: 8 bitMantissa: 23 bit
01000011110110000000000000000000

Formati speciali
...

Come abbiamo detto prima alcuni valori come NaN oppure l'infinito sono rappresentati tramite dei valori speciali nella codifica dello standard IEEE 754:

ValoreValore esponenteValore mantissa: M
Infinito (speciale)255M = 0
NaN (speciale)255M 0
Numero normalizzato0 < esponente < 255qualunque
Numero denormalizzatoesponente = 0M 0
Zeroesponente = 0M = 0