logo

Numeri in virgola mobile standard IEEE 754

Lo standard IEEE per l'aritmetica in virgola mobile (IEEE 754) è uno standard tecnico per il calcolo in virgola mobile stabilito nel 1985 dall' Istituto di ingegneri elettrici ed elettronici (IEEE) . Lo standard affrontava molti problemi riscontrati nelle diverse implementazioni in virgola mobile che le rendevano difficili da usare in modo affidabile e ne riducevano la portabilità. La virgola mobile dello standard IEEE 754 è oggi la rappresentazione più comune dei numeri reali sui computer, inclusi PC basati su Intel, Mac e la maggior parte delle piattaforme Unix.

Esistono diversi modi per rappresentare un numero in virgola mobile, ma nella maggior parte dei casi IEEE 754 è il più efficiente. IEEE 754 ha 3 componenti di base:



  1. Il Segno della Mantissa –
    Questo è semplice come il nome. 0 rappresenta un numero positivo mentre 1 rappresenta un numero negativo.
  2. L’esponente parziale –
    Il campo dell'esponente deve rappresentare sia gli esponenti positivi che quelli negativi. Viene aggiunto un bias all'esponente effettivo per ottenere l'esponente memorizzato.
  3. La Mantissa Normalizzata –
    La mantissa è parte di un numero in notazione scientifica o di un numero in virgola mobile, costituito dalle sue cifre significative. Qui abbiamo solo 2 cifre, cioè O e 1. Quindi una mantissa normalizzata è una con un solo 1 a sinistra del decimale.

I numeri IEEE 754 sono divisi in due in base ai tre componenti precedenti: precisione singola e precisione doppia.




TIPI CARTELLO ESPONENTE DIVERSO MANTISA NORMALIZZATA PREGIUDIZIO
Precisione singola 1(31esimo bit) 8(30-23) 23(22-0) 127
Doppia precisione 1(63esimo bit)



11(62-52) 52(51-0) 1023

Esempio -

85.125 85 = 1010101 0.125 = 001 85.125 = 1010101.001 =1.010101001 x 2^6 sign = 0 1. Single precision: biased exponent 127+6=133 133 = 10000101 Normalised mantisa = 010101001 we will add 0's to complete the 23 bits The IEEE 754 Single precision is: = 0 10000101 01010100100000000000000 This can be written in hexadecimal form 42AA4000 2. Double precision: biased exponent 1023+6=1029 1029 = 10000000101 Normalised mantisa = 010101001 we will add 0's to complete the 52 bits The IEEE 754 Double precision is: = 0 10000000101 0101010010000000000000000000000000000000000000000000 This can be written in hexadecimal form 4055480000000000>

Valori speciali: IEEE ha riservato alcuni valori che possono presentare ambiguità.

  • Zero –
    Zero è un valore speciale indicato con un esponente e una mantissa pari a 0. -0 e +0 sono valori distinti, sebbene entrambi siano uguali.



  • Denormalizzato –
    Se l'esponente è composto da tutti zeri, ma la mantissa no, il valore è un numero denormalizzato. Ciò significa che questo numero non ha un presupposto iniziale prima del punto binario.

  • Infinito –
    I valori +infinito e -infinito sono indicati con un esponente di tutti uno e una mantissa di tutti zeri. Il bit di segno distingue tra infinito negativo e infinito positivo. Le operazioni con valori infiniti sono ben definite in IEEE.

  • Non un numero (NAN) –
    Il valore NAN viene utilizzato per rappresentare un valore che è un errore. Questo è rappresentato quando il campo esponente è tutto uno con un bit di segno zero o una mantissa che non sia 1 seguito da zeri. Questo è un valore speciale che potrebbe essere utilizzato per denotare una variabile che non contiene ancora un valore.
ESPONENTE MANTISA VALORE
0 0 0 esatto
255 0

Infinito
0 non 0 denormalizzato
255 non 0

Non un numero (NAN)

Simile per Doppia precisione (sostituisce semplicemente 255 con 2049), Intervalli di numeri in virgola mobile:

Denormalizzato Normalizzato Decimale approssimativo
Precisione unica ±2-149a (1 – 2-23)×2-126 ±2-126a (2 – 2-23)×2127 ± circa 10-44.85a circa 1038.53
Doppia precisione ±2-1074a (1 – 2-52)×2-1022 ±2-1022a (2 – 2-52)×21023 ± circa 10-323.3a circa 10308.3

L'intervallo di numeri in virgola mobile positivi può essere suddiviso in numeri normalizzati e numeri denormalizzati che utilizzano solo una parte della precisione delle frazioni. Poiché ogni numero a virgola mobile ha un valore corrispondente negato, gli intervalli sopra sono simmetrici attorno allo zero.

Esistono cinque intervalli numerici distinti che i numeri in virgola mobile a precisione singola non sono in grado di rappresentare con lo schema presentato finora:

  1. Numeri negativi inferiori a – (2 – 2-23) × 2127(overflow negativo)
  2. Numeri negativi maggiori di –2-149(underflow negativo)
  3. Zero
  4. Numeri positivi inferiori a 2-149(underflow positivo)
  5. Numeri positivi maggiori di (2 – 2-23) × 2127(eccesso positivo)

L'overflow in genere significa che i valori sono diventati troppo grandi per essere rappresentati. L'underflow è un problema meno serio perché denota semplicemente una perdita di precisione, che è garantita essere molto prossima allo zero.

Di seguito è riportata la tabella dell'intervallo effettivo totale dei numeri a virgola mobile IEEE finiti:

Binario Decimale
Separare ±(2-2-23) × 2127 circa ± 1038.53
Doppio ±(2-2-52) × 21023 circa ± 10308,25

Operazioni speciali –

Operazione Risultato
n ÷ ±Infinito 0
±Infinito × ±Infinito ±Infinito
±diverso da Zero ÷ ±0 ±Infinito
±finito × ±infinito ±Infinito
Infinito + Infinito
Infinito – -Infinito
+Infinito
-Infinito – Infinito
-Infinito + – Infinito
– Infinito
±0 ÷ ±0 NaN
±Infinito ÷ ±Infinito NaN
±Infinito × 0 NaN
NaN == NaN Falso