Aquí podría ser tu PUBLICIDAD


¿Cuál es la representación interna de inf y NaN?

votos
10

Un amigo y yo estábamos debatiendo sobre cómo se almacenan los Inf y NaN durante el almuerzo de hoy.

Tome Fortran 90 por ejemplo. Los reales de 4 bytes pueden obtener el valor de Inf o NaN. ¿Cómo se almacena esto internamente? Presumiblemente, un real de 4 bytes es un número representado internamente por un número binario de 32 dígitos. ¿Los Inf's y NaN están almacenados como números binarios de 33 bits?

Publicado el 12/03/2009 a las 20:16
fuente por usuario Pete
En otros idiomas...        العربية       

2 respuestas

votos
20

Específicamente del enlace de Pesto :

La representación estándar de coma flotante de precisión simple IEEE requiere una palabra de 32 bits, que se puede representar como numerada de 0 a 31, de izquierda a derecha. El primer bit es el bit de signo S, los siguientes ocho bits son los bits de exponente, ' E', y los últimos 23 bits son la fracción ' F':

S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF  
0 1 8 9 31  

El valor Vrepresentado por la palabra se puede determinar de la siguiente manera:

  • Si E=255y Fes distinto de cero, entonces V=NaN("No es un número")
  • Si E=255y Fes cero y Ses 1, entoncesV=-Infinity
  • Si E=255y Fes cero y Ses 0, entoncesV=Infinity
  • Si, 0<E<255entonces, V=(-1)**S * 2 ** (E-127) * (1.F)donde " 1.F" pretende representar el número binario creado al anteponer a F con un 1 implícito y un punto binario.
  • Si E=0y Fes distinto de cero, entonces V=(-1)**S * 2 ** (-126) * (0.F)estos son valores "no normalizados".
  • Si E=0y Fes cero y Ses 1, entoncesV=-0
  • Si E=0y Fes cero y Ses 0, entoncesV=0
Respondida el 12/03/2009 a las 08:39
fuente por usuario Andy Mikula


Aquí podría ser tu PUBLICIDAD


votos
9

La mayoría de las representaciones de coma flotante se basan en el estándar IEEE, que ha establecido patrones definidos para Inf y NaN.

Respondida el 12/03/2009 a las 08:20
fuente por usuario Pesto