2015-11-12 1 views
0

Je sais que dans standart IEEE 754 la division par zéro est autorisée. Mais je veux savoir quelle est sa représentation en binaire. Par exemple, 0,25 en décimal sera
0 01111101 00000000000000000000000 en binaire. Qu'en est-il de 5,0/0,0 ou 0,0/0,0 ont-ils une représentation en binaire, et sont-ils identiques? Merci.IEEE 754, division par zéro

Répondre

0

Mark m'a corrigé que la division par zéro aboutit à l'infini positif ou négatif dans IEEE 754-2208.

Dans l'article wikipedia sur le sujet, nous trouvons ce qui suit:

signe = 0 pour l'infini positif, 1 pour l'infini négatif.

exposant polarisé = tous les 1 bits.

fraction = tous les 0 bits.

Source:IEEE 754 Wikipedia article

je me trompais en pensant qu'il entraînerait un NaN, sur lequel je précisons ci-dessous.

+ Infinity:

0 11111111 00000000000000000000000 

-Infinity:

1 11111111 00000000000000000000000 

RÉPONSE ORIGINAL Incorrecte ci-dessous

peut encore être d'intérêt tangentielle, laissant ainsi dans.


Cela résulte, à mon sens, d'un NaN, pr ** pas un nombre *.

La page wikipedia sur Nan a une section d'encodage à partir de laquelle la citation suivante arrive. Dans les formats de stockage à virgule flottante conformes à la norme IEEE 754, les NaN sont identifiés par des trames de bits spécifiques prédéfinies spécifiques aux NaN. Le bit de signe n'a pas d'importance. Le format binaire NaN est représenté par le champ exponentiel rempli de (comme les valeurs d'infini), et certains nombre non nul dans la signification (pour les rendre distincts des valeurs infinies). La norme IEEE 754 d'origine de 1985 (IEEE 754-1985) ne décrit que les formats à virgule flottante binaire et ne spécifie pas comment l'état signalé/silencieux doit être étiqueté. En pratique, le bit le plus significatif du significand a déterminé si un NaN est signifiant ou silencieux. Deux implémentations différentes, avec des sens inversés, ont abouti.

Source:NaN Encoding (Wikipedia)

L'article va également à noter qu'en 2008, la révision IEEE 754-2008 ajoute une méthode suggérée pour indiquer si le NaN doit être calme ou bavard.

NaN est identifié en ayant les cinq premiers bits du champ de combinaison après que le bit de signe a été mis à un. Le sixième bit du champ est le drapeau 'is_quiet'. La norme suit l'interprétation en tant que drapeau 'is_signaling'. C'est à dire. le bit signalé/calme est nul si le NaN est silencieux, et non nul si le N est identifié en ayant le signal aN. Fondamentalement, comme précédemment, l'exposant est tout un, et le dernier bit indique s'il est silencieux ou non.

Mon interprétation est que NaN pourrait être représenté dans un certain nombre de façons, notamment comme suit:

0 11111111 00000000000000000000010 
+1

Quelques inexactitudes: la division d'un nombre fini non nul par zéro donnera une infinité convenablement signé (pas un NaN) sous la gestion des exceptions par défaut. Et le second paragraphe que vous avez cité se rapporte au format decimal32 plutôt qu'au format binary32 utilisé par l'OP. (Seuls les formats à virgule flottante décimale qui ont le "champ de combinaison" qui combine l'exposant et l'information significative.) –

+0

Merci @ MarkDickinson, vous avez complètement raison. Révisé ma réponse. – Dan