Frage

Obwohl es einfach ist, konnte ich es beim Googeln nicht finden.Wie wir wissen, unterstützt die Gleitkommadarstellung einen größeren Zahlenbereich und die Operation ist langsamer als bei reinen Ganzzahlen.Wir wissen auch, wie Mantisse und Exponenten zur Darstellung eines Gleitkommas verwendet werden.Aber meine Frage ist, dass beispielsweise in einem 32-Bit-System s* b^e die Ausgabe länger als 32-Bit oder 32 Bit ist?(wobei s=Signifikand, b=Basis, e=Exponent)

War es hilfreich?

Lösung

Die genaue Anzahl der Bits, die zur Darstellung der Mantisse und des Exponenten von Gleitkommazahlen verwendet werden, variiert von CPU zu CPU, daher ist die Frage sicherlich architekturabhängig.

Es gibt einen Standard, der sehr vorherrschend ist: IEEE-Gleitkomma, und entsprechend diese verwandte SO-Frage Alle wichtigen CPUs, die Sie heute wahrscheinlich treffen werden, implementieren es, einschließlich IA32.

Laut Wikipedia erfordert IEEE Floating Point, dass bei jeder Implementierung mindestens eine der folgenden Optionen verfügbar ist:

  • binär32:24-Bit-Mantisse (einschließlich 1 Vorzeichenbit) und 8-Bit-Exponent
  • binär64:53-Bit-Mantisse (einschließlich 1 Vorzeichenbit) und 11-Bit-Exponent

Angenommen, mit 32 Bit meinen Sie das IA 32-Familie (was nur eine der wenigen Architekturen ist, die 32 Bit verwenden), dann die Gleitkommaregister kann bis zu 80 Bit enthalten, was bedeutet, dass Binär32, Binär64 und ein Nicht-IEC-80-Bit-Format mit 15 Exponentenbits unterstützt werden können.Um zwischen 32-Bit- und 64-Bit-Anweisungen zu unterscheiden, verwenden die meisten Assembler Größenmodifikatoren wie QWORD oder DWORD.

Neben CPU-Implementierungen können Sprachen auch die Einhaltung von IEEE Floating Point erfordern.In der C-Sprache beispielsweise gibt Anhang 7 an, dass das Makro __STDC_IEC_599__ wird dann automatisch vom Compiler definiert float ist garantiert binär32 und double binär64. long double ist nicht auf IEC festgelegt und könnte daher 80 Bit auf einem IA32-Arch verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top