Stellen Sie sich eine Festkommadarstellung vor, die als entarteter Fall einer Gleitkommazahl betrachtet werden kann. Es ist durchaus möglich, das Zweierkomplement für negative Zahlen zu verwenden. Aber warum ist ein Vorzeichenbit für Gleitkommazahlen notwendig, sollten Mantissenbits nicht Zweierkomplemente verwenden?
Warum verwenden die Exponentenbits auch eine Vorspannung anstelle einer Darstellung mit Vorzeichen (ähnlich den Mantissenbits) oder einer Zweierkomplementdarstellung?
Update: Entschuldigung, wenn ich es nicht klargestellt habe. Ich habe nach dem Grund gesucht, wie die Gleitkommadarstellung geformt ist. Wenn es keinen starken Kompromiss zwischen den Alternativen bei der Implementierung gibt, kann dann jemand die historischen Aspekte der Gleitkommadarstellung erklären?
Aus Wikipedia:
Das Zweierkomplement ist eine Darstellung negativer Zahlen, die einfach sehr praktisch ist. Das ist der ganze Grund, es überhaupt zu benutzen.
Ein Mantisse-Exponent-Paar ist eine Darstellung einer Gleitkommazahl. Wenn Sie Gleitkommazahlen verwenden, arithmetieren Sie meistens nicht nur auf der Mantisse oder auf dem Exponenten.
quelle
Falsche Annahme. Das ist nicht nötig. Ich bin mir ziemlich sicher, dass ich Gleitkommaformate getroffen habe, bei denen das 2er-Komplement für die Mantisse verwendet wurde, aber ich müsste nach Namen suchen.
Ich bin weit davon entfernt, ein Spezialist für numerische Analysen zu sein, aber ich verstehe, dass es für sie wichtig ist, eine Null zu haben. Es ist wahrscheinlich einfacher zu manipulieren als die Ergänzung. Das war wahrscheinlich ein Kriterium bei der Wahl für IEEE-754.
Wieder ist es etwas, das nicht benötigt wird und einige haben es anders gemacht.
Es ist die Darstellung, für die es einfacher ist, eine Hardware-Implementierung für die Gruppe von Operationen durchzuführen, die an Exponenten ausgeführt werden (und hier ist eine Darstellung für -0 nicht erwünscht).
Eine der Konsequenzen dieser Wahl ist, dass Sie einen vorzeichenbehafteten Ganzzahlvergleich verwenden können, um die FP-Nummer zu vergleichen, wenn Sie sich nicht für NaN interessieren. Dies war möglicherweise ein Kriterium für einige (die Tatsache, dass NaN eine spezielle Behandlung erfordert, lässt mich bezweifeln, dass dies nicht der Fall ist für IEEE-754).
quelle
IEEE 754 verwendet Vorzeichen / Größe, nicht Zweierkomplement oder Einerkomplement.
Zweierkomplement hat den Nachteil, dass der positive und der negative Bereich nicht identisch sind. Wenn alle Bitmuster gültig sind, haben Sie Zahlen x, bei denen Sie -x nicht einfach berechnen können. Das ist schlecht. Die Alternative ist, dass es ungültige Bitmuster gibt, was ebenfalls schlecht ist. In IEEE 754 gibt es keine ungültigen Bitmuster für 64- oder 32-Bit-Gleitkommazahlen, sodass Sie sich darüber keine Gedanken machen müssen.
Das eine Komplement würde das Multiplizieren / Dividieren komplexer machen (bei vorzeichenbehafteter Größe werden nur die Zeichen xor und die Mantisse als vorzeichenlose Zahl behandelt). Beim Addieren und Subtrahieren möchte ich wirklich nicht über das Addieren und Subtrahieren in der eigenen Ergänzung nachdenken, da es meinen Kopf verletzt.
quelle
Das Vorzeichnen von Nullen erhöht die Aussagekraft, die bei numerischen Berechnungen nützlich sein kann. Auf der Wikipedia-Seite ' Signed zero ' heißt es:
WH Kahan, einer der Hauptentwickler von IEEE 754-Gleitkommazahlen, ist aus diesen Gründen ein Befürworter der vorzeichenbehafteten Null. Seine Meinung dürfte viel Gewicht gehabt haben.
quelle
Ich denke, es ist wichtig zu verstehen, dass Gleitkommaberechnungen ungefähre und keine exakten Werte liefern. Das heißt, wenn eine Gleitkommaberechnung einen codierten Wert X ergibt, dann repräsentiert dies a theoretisch idealen Wert dar, der mit ziemlicher Sicherheit NICHT X ist, sondern im Bereich [X .. X + e) {wobei 'e' das 'ist. machine epsilon ', dh es gibt keine Gleitkommazahl zwischen X und X + e}. Insbesondere stellt eine Gleitkommazahl Null eine ideale Zahl dar, die wahrscheinlich nicht genau Null ist, aber zu klein ist, um sie mit einem von Null verschiedenen Gleitkomma-codierten Wert darzustellen.
Angesichts der Tatsache, dass die Darstellung von Vorzeichen und Größe eine Möglichkeit darstellt, der Codierung zu ermöglichen, sich genau zu "erinnern", auf welcher Seite von Null sich der ideale Wert befindet, auf der positiven oder der negativen. Dies ist bei bestimmten komplexen (im Sinne von "a + bi") Berechnungen von entscheidender Bedeutung. Komplexe -> komplexe Funktionen sind häufig "mehrwertig". Daher ist es für eine ordnungsgemäße Berechnung von entscheidender Bedeutung, die Positionen der "Astschnitte" zu berücksichtigen. Vorzeichenlose Nullen markieren dann gewissermaßen die Stellen dieser Verzweigungsschnitte - die Berechnung auf der positiven Seite unterscheidet sich von der auf der negativen Seite.
quelle
Die meisten Gleitkommaformate nutzen die Tatsache, dass in einem Binärsystem jeder Nicht-Null-Wert mit einem Nicht-Minimal-Exponenten eine "1" als höchstwertiges Bit der Mantisse hat. In einem System mit einem 23-Bit-Feld für die Mantisse liegen die Mantissen mit positiven Zahlen also nicht zwischen 0 und 8.388.607, sondern zwischen 8.388.608 und 16.777.215. Die Mantissen der Zahlen, die positiv sein können oder nicht, reichen von -16.777.215 bis -8.388.608 und von +8.388.608 bis +16.777.215. Während Zweierkomplement das beste numerische Format ist, wenn Berechnungen "reibungslos" über Null durchgeführt werden müssen, bedeuten die diskontinuierlichen Bereiche der Mantissenwerte, dass Berechnungen über Null nicht reibungslos funktionieren können, unabhängig davon, ob Zweierkomplement oder etwas anderes verwendet wird .
quelle