Was ist der Unterschied zwischen einer Gleitkommaoperation mit einfacher Genauigkeit und einer Gleitkommaoperation mit doppelter Genauigkeit?
Ich interessiere mich besonders für praktische Begriffe in Bezug auf Videospielkonsolen. Verfügt der Nintendo 64 beispielsweise über einen 64-Bit-Prozessor, und wenn dies der Fall ist, bedeutet dies, dass er Gleitkommaoperationen mit doppelter Genauigkeit ausführen kann? Können PS3 und Xbox 360 Gleitkommaoperationen mit doppelter Genauigkeit oder nur mit einfacher Genauigkeit ausführen, und im Allgemeinen werden die Funktionen mit doppelter Genauigkeit verwendet (sofern vorhanden?).
floating-point
precision
processor
operations
tweetypi
quelle
quelle
Antworten:
Hinweis: Der Nintendo 64 verfügt jedoch über einen 64-Bit-Prozessor:
Aus der Webopedia :
Das IEEE-Format mit doppelter Genauigkeit hat tatsächlich mehr als doppelt so viele Genauigkeitsbits wie das Format mit einfacher Genauigkeit sowie einen viel größeren Bereich.
Aus dem IEEE-Standard für Gleitkomma-Arithmetik
Mit einfacher Genauigkeit
Die IEEE-Gleitkomma-Standarddarstellung mit einfacher Genauigkeit erfordert ein 32-Bit-Wort, das von links nach rechts als von 0 bis 31 nummeriert dargestellt werden kann.
Die letzten 23 Bits sind der Bruch 'F':
Der durch das Wort dargestellte Wert V kann wie folgt bestimmt werden:
0<E<255
dann,V=(-1)**S * 2 ** (E-127) * (1.F)
wo "1.F" die Binärzahl darstellen soll, die durch Präfixieren von F mit einer impliziten führenden 1 und einem Binärpunkt erzeugt wird.V=(-1)**S * 2 ** (-126) * (0.F)
. Dies sind "nicht normalisierte" Werte.Bestimmtes,
Doppelte Genauigkeit
Die IEEE-Gleitkomma-Standarddarstellung mit doppelter Genauigkeit erfordert ein 64-Bit-Wort, das von links nach rechts als von 0 bis 63 nummeriert dargestellt werden kann.
Die letzten 52 Bits sind der Bruch 'F':
Der durch das Wort dargestellte Wert V kann wie folgt bestimmt werden:
0<E<2047
dann,V=(-1)**S * 2 ** (E-1023) * (1.F)
wo "1.F" die Binärzahl darstellen soll, die durch Präfixieren von F mit einer impliziten führenden 1 und einem Binärpunkt erzeugt wird.V=(-1)**S * 2 ** (-1022) * (0.F)
sind dies "nicht normalisierte" Werte.Referenz:
ANSI / IEEE-Standard 754-1985,
Standard für binäre Gleitkomma-Arithmetik.
quelle
**
' ist ExponentiationIch habe viele Antworten gelesen, aber keine scheint richtig zu erklären, woher das Wort double kommt. Ich erinnere mich an eine sehr gute Erklärung eines Universitätsprofessors, den ich vor einigen Jahren hatte.
Unter Hinweis auf den Stil der Antwort von VonC verwendet eine Gleitkommadarstellung mit einfacher Genauigkeit ein Wort von 32 Bit.
Darstellung:
(Nur um darauf hinzuweisen, das Vorzeichenbit ist das letzte, nicht das erste.)
Eine Gleitkommadarstellung mit doppelter Genauigkeit verwendet ein 64-Bit-Wort.
Darstellung:
Wie Sie vielleicht bemerken, habe ich geschrieben, dass die Mantisse in beiden Typen ein bisschen mehr Informationen enthält als ihre Darstellung. Tatsächlich ist die Mantisse eine Zahl, die ohne all ihre nicht signifikanten Zahlen dargestellt wird
0
. Beispielsweise,Dies bedeutet, dass die Mantisse immer in der Form sein wird
0.α 1 α 2 ... α t × β p
wobei β die Repräsentationsbasis ist. Da der Bruch jedoch eine Binärzahl ist, ist α 1 immer gleich 1, so dass der Bruch als 1 umgeschrieben werden kann. Α 2 α 3 ... α t + 1 × 2 p und die anfängliche 1 implizit angenommen werden kann, Platz für ein zusätzliches Bit schaffen (α t + 1 ).
Nun ist es offensichtlich wahr, dass das Doppel von 32 64 ist, aber daher kommt das Wort nicht.
Die Genauigkeit gibt die Anzahl der korrekten Dezimalstellen an , dh ohne Darstellungsfehler oder Annäherungen. Mit anderen Worten, es gibt an, wie viele Dezimalstellen sicher verwendet werden können.
Trotzdem ist es einfach, die Anzahl der Dezimalstellen zu schätzen, die sicher verwendet werden können:
quelle
Okay, der grundlegende Unterschied an der Maschine besteht darin, dass bei doppelter Genauigkeit doppelt so viele Bits wie bei einzelnen verwendet werden. In der üblichen Implementierung sind das 32 Bit für Single, 64 Bit für Double.
Aber was bedeutet das ? ? Wenn wir den IEEE-Standard annehmen, hat eine einzelne Genauigkeitszahl ungefähr 23 Bits der Mantisse und einen maximalen Exponenten von ungefähr 38; Eine doppelte Genauigkeit hat 52 Bits für die Mantisse und einen maximalen Exponenten von etwa 308.
Die Details finden Sie wie gewohnt bei Wikipedia .
quelle
Um all die wunderbaren Antworten hier hinzuzufügen
Zunächst werden float und double zur Darstellung von Zahlenbruchzahlen verwendet. Der Unterschied zwischen den beiden ergibt sich aus der Tatsache, mit welcher Genauigkeit sie die Zahlen speichern können.
Im Grunde wollen wir wissen, wie genau die Zahl gespeichert werden kann und was wir Präzision nennen.
@Alessandro hier zitieren
Float kann ungefähr 7-8 Stellen im Bruchteil genau speichern, während Double ungefähr 15-16 Stellen im Bruchteil genau speichern kann
Float kann also die doppelte Menge an Bruchteilen speichern . Deshalb wird Double als Double the Float bezeichnet
quelle
Zur Frage "Können ps3 und xbxo 360 Gleitkommaoperationen mit doppelter Genauigkeit oder nur mit einfacher Genauigkeit ausführen und werden im Allgemeinen die Funktionen mit doppelter Genauigkeit verwendet (sofern vorhanden?)."
Ich glaube, dass beide Plattformen nicht in der Lage sind, doppelte Gleitkommazahlen zu verwenden. Der ursprüngliche Cell-Prozessor hatte nur 32-Bit-Floats, genau wie die ATI-Hardware, auf der die XBox 360 basiert (R600). Die Zelle erhielt später doppelte Gleitkomma-Unterstützung, aber ich bin mir ziemlich sicher, dass die PS3 diesen Chippery nicht verwendet.
quelle
Grundsätzlich behandelt Gleitkomma-Arithmetik mit einfacher Genauigkeit 32-Bit-Gleitkommazahlen, während doppelte Genauigkeit 64-Bit behandelt.
Die Anzahl der Bits mit doppelter Genauigkeit erhöht den Maximalwert, der gespeichert werden kann, sowie die Genauigkeit (dh die Anzahl der signifikanten Stellen).
quelle
Alle haben sehr ausführlich erklärt und nichts, was ich weiter hinzufügen könnte. Obwohl ich es gerne in Laienbegriffen oder einfach in Englisch erklären würde
..... .....
Eine Variable, die "1.9" speichern oder darstellen kann, bietet eine geringere Genauigkeit als die Variable, die 1.9999 halten oder darstellen kann. Dieser Bruch kann bei großen Berechnungen einen großen Unterschied bedeuten.
quelle
Doppelte Genauigkeit bedeutet, dass das Speichern der Zahlen die doppelte Wortlänge benötigt. Auf einem 32-Bit-Prozessor sind die Wörter alle 32 Bit, also sind Doppel 64 Bit. Für die Leistung bedeutet dies, dass die Ausführung von Operationen mit Zahlen mit doppelter Genauigkeit etwas länger dauert. Sie erhalten also eine bessere Reichweite, aber die Leistung ist geringfügig beeinträchtigt. Dieser Treffer wird durch Hardware-Gleitkommaeinheiten ein wenig gemildert, ist aber immer noch vorhanden.
Der N64 verwendete einen MIPS R4300i-basierten NEC VR4300, der ein 64-Bit-Prozessor ist, aber der Prozessor kommuniziert mit dem Rest des Systems über einen 32-Bit breiten Bus. Daher verwendeten die meisten Entwickler 32-Bit-Zahlen, weil sie schneller sind, und die meisten Spiele benötigten zu diesem Zeitpunkt keine zusätzliche Präzision (daher verwendeten sie Floats, nicht Doubles).
Alle drei Systeme können Floating-Operationen mit einfacher und doppelter Genauigkeit ausführen, dies ist jedoch möglicherweise nicht auf die Leistung zurückzuführen. (obwohl so ziemlich alles nach dem n64 einen 32 bit bus benutzte also ...)
quelle
Zunächst werden float und double zur Darstellung von Zahlenbruchzahlen verwendet. Der Unterschied zwischen den beiden ergibt sich aus der Tatsache, mit welcher Genauigkeit sie die Zahlen speichern können.
Zum Beispiel: Ich muss 123.456789 speichern. Einer kann möglicherweise nur 123.4567 speichern, während der andere möglicherweise den genauen 123.456789 speichern kann.
Im Grunde wollen wir wissen, wie genau die Zahl gespeichert werden kann und was wir Präzision nennen.
@Alessandro hier zitieren
Die Genauigkeit gibt die Anzahl der korrekten Dezimalstellen an, dh ohne Darstellungsfehler oder Annäherungen. Mit anderen Worten, es gibt an, wie viele Dezimalstellen sicher verwendet werden können.
Float kann ungefähr 7-8 Stellen im Bruchteil genau speichern, während Double ungefähr 15-16 Stellen im Bruchteil genau speichern kann
Double kann also doppelt so viel Bruchteil wie Float speichern. Deshalb wird Double als Double the Float bezeichnet
quelle
Gemäß IEEE754 • Standard für Gleitkommaspeicherung • 32- und 64-Bit-Standards (einfache und doppelte Genauigkeit) • 8- bzw. 11-Bit-Exponent • Erweiterte Formate (sowohl Mantisse als auch Exponent) für Zwischenergebnisse
quelle
Die Zahl mit einfacher Genauigkeit verwendet 32 Bit, wobei das MSB ein Vorzeichenbit ist, während die Zahl mit doppelter Genauigkeit 64 Bit verwendet, wobei das MSB ein Vorzeichenbit ist
Mit einfacher Genauigkeit
SEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)
Doppelte Genauigkeit:
SEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.(SIGN+EXPONENT+SIGNIFICAND)
quelle