Was ist der Unterschied zwischen -0 und 0?

7

In% C ++ gibt fmod(-2,2) -0 zurück. Der Ausdruck -0 == 0 ist wahr, aber die Bits sind unterschiedlich. Was ist der Zweck von etwas wie -0 , das 0 sein sollte, aber anders dargestellt wird? Wird -0 in allen Berechnungen genauso verwendet wie 0 ?

    
Danvil 14.09.2010, 09:06
quelle

4 Antworten

13

Nein, +0 und -0 werden nicht bei jeder Berechnung gleich verwendet. Zum Beispiel:

%Vor%

Ich empfehle Ihnen, Was jeder Informatiker über Fließkomma-Arithmetik wissen sollte David Goldberg, das beleuchtet, warum +0 und -0 in der Fließkommaarithmetik benötigt werden und auf welche Weise sie sich unterscheiden.

Beispiele dafür, wie sich +0 ad -0 unterscheiden (und warum das nützlich sein kann, wenn es um komplexe Werte geht), finden Sie in Kahan, W. 1987. Zweigstellen für komplexe Elementarfunktionen, in "Der Staat der Art in Numerical Analysis "(Ich konnte keine pdf-Datei zu diesem Artikel finden, Sie finden sie möglicherweise in Ihrer lokalen Universitätsbibliothek).

    
Giuseppe Cardone 14.09.2010, 09:17
quelle
10

Die Wikipedia-Seite Signed Zero beantwortet die meisten dieser Fragen:

  

Signed zero ist Null mit einem zugeordneten   Schild. In gewöhnlicher Arithmetik ist -0 = 0.   In der Computertechnik jedoch eine gewisse Anzahl   Darstellungen erlauben das   Existenz von zwei Nullen, oft bezeichnet   durch -0 (negative Null) und +0 (positive   Null). Dies geschieht in einigen signierten   Zahlendarstellungen für Ganzzahlen,   und in der meisten Fließkommazahl   Darstellungen. Die Nummer 0 ist   normalerweise als +0 kodiert, kann es aber   durch entweder +0 oder -0 dargestellt werden.

     

Der IEEE 754-Standard für Floating   Punktarithmetik (zur Zeit von   die meisten Computer und Programmierung   Sprachen, die Gleitkomma unterstützen   Zahlen) erfordert sowohl +0 als auch -0. Das   Nullen können als eine Variante betrachtet werden   der erweiterten reellen Zahlenzeile, z   dass 1 / -0 = -∞ und 1 / + 0 = + ∞, Division   bei Null ist nur undefiniert für ± 0 / ± 0.

     

(...)

     

Es wird behauptet, dass die Einbeziehung von   signed zero in IEEE 754 macht es sehr   einfacher, numerische Genauigkeit zu erreichen   in einigen kritischen Problemen, in   insbesondere bei komplexen Berechnungen   elementare Funktionen.

    
Kornel Kisielewicz 14.09.2010 09:13
quelle
3

IEEE Standard 754 erlaubt sowohl +0 als auch -0. Gleiche Mantisse, anderes Zeichen. Sie sollten in den Berechnungen gleich sein.

    
alxx 14.09.2010 09:13
quelle
-3

Ich glaube, dass das negative Vorzeichen durch fmod (mis?) - Implementierung verursacht wird, wobei das Vorzeichenbit explizit behandelt und am Ende der Verarbeitung wieder an das Ergebnis angehängt wird.

    
YeenFei 14.09.2010 09:17
quelle

Tags und Links