Question

Un ami & amp; Je discutais de la façon dont les Inf et NaN sont stockés pendant le déjeuner de ce jour.

Prenez Fortran 90 par exemple. Les réels de 4 octets peuvent obtenir la valeur de Inf ou NaN. Comment est-ce stocké en interne? Vraisemblablement, un réel de 4 octets est un nombre représenté en interne par un nombre binaire de 32 chiffres. Est-ce que Inf et NaN sont stockés sous forme de nombres binaires 33 bits?

Était-ce utile?

La solution

Spécifiquement à partir du lien du Pesto:

La représentation standard à virgule flottante simple précision IEEE nécessite un mot de 32 bits, pouvant être représenté par un numéro numéroté de 0 à 31, de gauche à droite. Le premier bit est le bit de signe, S les huit bits suivants sont les bits d'exposant, 'E' et les 23 derniers bits sont la fraction 'F':

S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF  
0 1      8 9                    31  

La valeur V représentée par le mot peut être déterminée comme suit:

  • Si E=255 et V=NaN sont non nuls, alors 1 (" pas un nombre "))
  • Si V=-Infinity et 0 est zéro et V=Infinity est 0<E<255, alors V=(-1)**S * 2 ** (E-127) * (1.F)
  • Si 1.F et E=0 est zéro et V=(-1)**S * 2 ** (-126) * (0.F) est V=-0, alors V=0
  • Si <=> alors <=> où " <=> " est destiné à représenter le nombre binaire créé en préfixant F avec un premier implicite et un binaire point.
  • Si <=> et <=> est différent de zéro, alors <=> ces sont & "non normalisés &"; valeurs.
  • Si <=> et <=> est zéro et <=> est <=>, alors <=>
  • Si <=> et <=> est zéro et <=> est <=>, alors <=>

Autres conseils

La plupart des représentations en virgule flottante sont basées sur le standard IEEE, qui a définir les modèles définis pour Inf et NaN.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top