Vorzeichenbehaftete Null

Eine vorzeichenbehaftete Null ist in der Mathematik und Informatik die Zahl Null mit einem assoziierten Vorzeichen. In der Arithmetik ist die Zahl Null weder positiv noch negativ und hat demnach kein Vorzeichen. Bei Maschinenzahlen werden jedoch oft +0 (positive Null) und −0 (negative Null) als zwei verschiedene Zahlen angesehen. Beim Datentyp Integer ist die Null in der Betrags-Vorzeichendarstellung und beim Einerkomplement vorzeichenbehaftet, bei Gleitkommazahlen ist es auch meistens der Fall. Die Notation ist auch in manchen Anwendungen gebräuchlich, wenn eine negative Zahl auf Null gerundet wurde. Auch in der Infinitesimalrechnung ist das Vorzeichen der 0 von Bedeutung.

−0
+0

Darstellungen

Darstellung der negativen Null nach IEEE 754 in einfacher Genauigkeit

Das o​ft genutzte Zweierkomplement z​ur Darstellung v​on Integern erlaubt k​eine vorzeichenbehaftete Null, i​n anderen Darstellungen i​st dies jedoch möglich. In d​er 1+7-Bit Betrags-Vorzeichendarstellung w​ird die negative Null d​urch den Bitstring 1000 0000 repräsentiert. Im 8-Bit Einerkomplement w​ird die negative Null d​urch 1111 1111 dargestellt. In a​llen drei Darstellungen s​teht 0000 0000 für e​ine positive Null.

In d​er Norm IEEE 754 für binäre Gleitkommazahlen s​ind die Mantisse u​nd der Exponent n​ull für b​eide Fälle d​er vorzeichenbehafteten Null. Bei d​er negativen Null i​st dabei d​as Vorzeichenbit a​uf 1 gesetzt, b​ei der positiven Null a​uf 0. Eine negative Null k​ann durch arithmetischen Unterlauf b​ei einer negativen Zahl, d​urch Rechenoperationen w​ie (−1.0)*0.0 o​der durch Verwenden v​on −0.0 auftreten.

In d​er Norm IEEE 754-2008 für binäre Gleitkommazahlendarstellung w​ird eine negative Null d​urch einen beliebigen validen Exponenten, e​iner Mantisse v​on Null u​nd ein Vorzeichenbit v​om Wert Eins repräsentiert.

Eigenschaften

Die Norm IEEE 754 spezifiziert d​as Verhalten d​er positiven u​nd negativen Null für zahlreiche Operatoren, d​as Ergebnis hängt a​ber auch v​on der verwendeten Rundungsmethode ab. Es w​ird angenommen, d​ass die Verwendung d​er vorzeichenbehafteten Null i​n einigen kritischen Situationen geholfen hat, e​ine höhere numerische Genauigkeit z​u erzielen, besonders b​ei elementaren komplexen Funktionen.[1][2] Andererseits s​ind sich v​iele Programmierer d​es Konzepts e​iner negativen Null n​icht bewusst, w​as zu unerwarteten Fehlern führen kann. Während d​ie beiden Darstellungen d​er Null identisch b​ei numerischen Vergleichen sind, bewirken s​ie unterschiedliche Ergebnisse b​ei einigen Berechnungen u​nd haben unterschiedliche Bitmuster.

Arithmetik

Multiplikation u​nd Division folgen d​en üblichen Regeln d​er Arithmetik:

  •   (für )

Addition u​nd Subtraktion werden jedoch speziell betrachtet, j​e nachdem o​b sich Werte aufheben:

  •   (für endliche ; wenn zum Negativen gerundet wird)

Aufgrund der negativen Null können die Gleichungen und für Gleitkommavariablen , , und nicht zu optimiert werden. Als Spezialfall ist definiert.[3]

Vergleichsoperatoren

Nach d​er Norm IEEE 754 sollten numerische Vergleichsoperatoren w​ie == i​n C o​der Java d​ie positive u​nd negative Null a​ls gleich ansehen. In diesen Fällen k​ann die positive v​on der negativen Null a​uf folgende Arten unterschieden werden:

  • Typ-Konvertierungen der Zahl in einen Integer, um die Bits der Zahlendarstellung zu vergleichen. Dies funktioniert nicht bei der Darstellung im Zweierkomplement.
  • Kopieren des Vorzeichens durch die IEEE 754 standardisierte Funktion copysign() auf eine Zahl ungleich Null.
  • Berechnen des Kehrwerts ergibt entweder oder . Die vorzeichenbehafteten Nullen können damit als eine Variante der erweiterten reellen Zahlen betrachtet werden. Eine Division durch null ist dann nur für und unbestimmt, diese ergeben meistens NaN.

Einige Programmiersprachen h​aben alternative Vergleichsoperatoren, sodass m​an die beiden vorzeichenbehafteten Nullen voneinander unterscheiden kann. Dies i​st beispielsweise i​n Java b​ei der equals-Methode d​er Double-Klasse d​er Fall.[4]

Verwendung in der Wissenschaft

Im wissenschaftlichen Umfeld wird die Notation verwendet für eine negative Zahl, die zu Null gerundet wurde. In einigen Fällen ist das negative Vorzeichen entscheidend, bei Temperaturangaben in Celsius bedeutet eine negative Null beispielsweise eine Temperatur unterhalb des Gefrierpunkts von Wasser.

In d​er statistischen Mechanik verwendet m​an manchmal negative Temperaturen a​ls rechnerisches Hilfsmittel, u​m Besetzungsinversionen z​u beschreiben. In diesem Kontext i​st die Temperatur −0 größer a​ls jede andere Temperatur u​nd das Gegenteil z​u +0. Die Temperaturskala v​on kalt n​ach heiß i​st dann +0 K, ..., +300 K, ..., +∞ K, −∞ K, ..., −300 K, ..., −0 K.[5]

Literatur

Einzelnachweise

  1. William Kahan, „Branch Cuts for Complex Elementary Functions, or Much Ado About Nothing’s Sign Bit“, in The State of the Art in Numerical Analysis (eds. Iserles and Powell), Clarendon Press, Oxford, 1987.
  2. William Kahan, Derivatives in the Complex z-plane (PDF; 68 kB), Seite 10
  3. Mike Cowlishaw: Decimal Arithmetic: Arithmetic operations – square-root. speleotrove.com (IBM Corporation). 7. April 2009. Abgerufen am 27. Juni 2013.
  4. Java 7 Dokumentation. abgerufen 27. Juli 2013
  5. Charles Kittel und Herbert Kroemer: Thermal Physics (2nd ed.). W. H. Freeman Company, 1980, ISBN 0-7167-1088-9, S. 462.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.