8
votes

Quelle est la différence entre -0 et 0?

en C ++, par exemple fmod (-2,2) retourne -0 . L'expression -0 == 0 est vraie, mais les bits sont différents. Quel est le but d'avoir quelque chose comme -0 qui devrait être 0 mais est représenté différemment? Est -0 utilisé exactement de la même manière que 0 dans n'importe quel calcul?


2 commentaires

Je crois que 1/0 est une infinité positive et 1/ -0 est une infini négative. Autre que cela je ne sais pas.


Je ne sais pas si la différence entre -0 et 0 est -0 ou 0.


4 Réponses :


3
votes

IEEE Standard 754 permet à la fois +0 et -0. Même mantissa, signe différent. Ils devraient être les mêmes en calculs.


2 commentaires

Sauf quand ils sont différents; 1 / x , par exemple.


Ok, différent. Je ne divis pas par zéro qui souvent, alors pardonnez-moi.



10
votes

Le Signé Zero La page Wikipedia répondra la plupart de ces questions:

Signé zéro est zéro avec un associé signe. En arithmétique ordinaire, -0 = 0. Cependant, en informatique, un nombre Les représentations permettent la existence de deux zéros, souvent notés par -0 (zéro négatif) et +0 (positif zéro). Cela se produit dans certains signés représentations de nombre pour les entiers, et dans la plupart du nombre de points flottants représentations. Le numéro 0 est généralement codé comme +0, mais il peut être représenté par +0 ou -0.

la norme IEEE 754 pour flotter arithmétique point (actuellement utilisé par la plupart des ordinateurs et de la programmation Langues qui supportent le point flottant chiffres) nécessite à la fois +0 et -0. Les Les zéros peuvent être considérés comme une variante de la ligne de nombres réels étendue telle que 1 / -0 = -∞ et 1 / + 0 = + ∞, division par zéro n'est que non défini pour ± 0 / ± 0.

(...)

Il est affirmé que l'inclusion de Signé zéro à IEEE 754 en fait beaucoup plus facile d'obtenir une précision numérique Dans certains problèmes critiques, dans particulier lors de l'informatique avec complexe fonctions élémentaires.


0 commentaires

-3
votes

Je crois que le signe négatif est causé par la mise en oeuvre de FMOD (MISS?), où le bit de signalisation est manipulé explicitement et attaché à la fin de la fin du traitement.


1 commentaires

Je suis désolé mais il n'y a pas grand chose à ajouter. Le signe négatif n'est pas causé par la mise en œuvre de la FMOD (MIS). Lisez les autres réponses pour une explication.



14
votes

Non, +0 code> et -0 code> ne sont pas utilisés de la même manière dans tous les calculs. Par exemple:

3·(+0) = +0
+0/-3 = -0


0 commentaires