2009-03-12 17 views
10

Un amico & Stavo discutendo sul modo in cui Inf's e NaN sono archiviati durante il pranzo di oggi.Qual è la rappresentazione interna di inf e NaN?

Prendi Fortran 90 per esempio. I reals a 4 byte possono ottenere il valore di Inf o NaN. Come viene conservato internamente? Presumibilmente, un reale a 4 byte è un numero rappresentato internamente da un numero binario a 32 cifre. Inf e NaN sono memorizzati come numeri binari a 33 bit?

risposta

20

particolare dal di link pesto:

IEEE singola precisione floating point rappresentazione standard richiede una parola di 32 bit, che può essere rappresentato come numerati da 0 a 31, da sinistra a destra. Il primo bit è il bit di segno, S, i successivi otto bit sono i bit esponente, 'E', e gli ultimi 23 bit sono la frazione 'F':

 
S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF 
0 1  8 9     31 

il valore V rappresentato dalla parola può essere determinata come segue:

  • Se E=255 e F è diverso da zero, allora V=NaN ("Non è un numero")
  • Se E=255 e F è zero e S è 1, quindi V=-Infinity
  • Se E=255 e F è zero e S è 0, quindi V=Infinity
  • Se 0<E<255 poi V=(-1)**S * 2 ** (E-127) * (1.F) dove "1.F" destinato a rappresentare il numero binario creato anteponendo F con un implicito principali 1 e un binario punto.
  • Se E=0 e F è diverso da zero, quindi V=(-1)**S * 2 ** (-126) * (0.F) Questi valori sono "non normalizzati".
  • Se E=0 e F è zero ed è S1, quindi V=-0
  • Se E=0 e F è zero e S è 0, quindi V=0
9

La maggior parte delle rappresentazioni in virgola mobile si basa sullo standard IEEE, che ha set patterns definito per Inf e NaN.

+2

Link è rotto. – 0xbe5077ed

Problemi correlati