www.wikidata.de-de.nina.az
Die Norm IEEE 754 definiert Standarddarstellungen fur binare und dezimale Gleitkommazahlen in Computern und legt genaue Verfahren fur die Durchfuhrung mathematischer Operationen insbesondere fur Rundungen fest IEEE 754Titel IEEE Standard for Floating Point ArithmeticErstveroffentlichung 1985Letzte Ausgabe 2019 Inhaltsverzeichnis 1 Geschichte 1 1 IEEE 754 1985 1 2 IEEE 754 2008 1 3 IEEE 754 2019 2 Allgemeines 3 Zahlenformate und andere Festlegungen des IEEE 754 Standards 4 Interpretation des Zahlenformats 4 1 Null 4 2 Normalisierte Zahl 4 3 Denormalisierte Zahl 4 4 Unendlich 4 5 Keine Zahl NaN 4 6 Beispiel Umwandlung von Dezimalbruch in binary32 4 7 Beispiel Umwandlung von binary32 in Dezimalbruch 5 Rundungen 6 Operationen 6 1 Arithmetik und Quadratwurzel 6 2 Konversionen 6 3 Vergleiche 6 4 Empfohlene Operationen 7 Ausnahmen Flags und Traps 8 Literatur 9 Weblinks 10 EinzelnachweiseGeschichte BearbeitenBis in die fruhen 1970er Jahre gab es zahlreiche unterschiedliche Darstellungsformate fur Gleitkommazahlen je nach Hersteller oder Baureihe des Prozessors Die Darstellungsformate unterschieden sich beispielsweise durch den Wertebereich der darstellbaren Zahlen die Genauigkeit die Unterstutzung von winzigen Zahlen nahe 0 die Rundungsverfahren oder die Genauigkeit der internen Zwischenergebnisse Diese Unterschiede fuhrten dazu dass Computerprogramme je nach verwendetem Computer unterschiedliche Ergebnisse lieferten Intel plante um 1976 fur seine Mikroprozessoren eine eigene FPU und wollte die bestmogliche Losung fur die zu implementierende Arithmetik Unter der Federfuhrung der IEEE begannen 1977 Treffen um Gleitkommaarithmetik fur Mikroprozessoren zu normieren Gleichzeitig mit der Entwicklung der Norm implementierte Intel die Normvorschlage weitgehend in dem Gleitkommaprozessor Intel 8087 Um 1980 wurde die Anzahl der Vorschlage fur die Norm auf zwei reduziert Der K C S Vorschlag nach seinen Autoren Kahan Coonen und Stone setzte sich letztlich gegen die Alternative von DEC F Format D Format und G Format durch Ein bedeutender Meilenstein auf dem Weg zur Norm war die Diskussion uber die Behandlung des Unterlaufs der bis dahin von den meisten Prozessoren vernachlassigt worden war IEEE 754 1985 Bearbeiten Die erste Ausgabe der Norm wurde 1985 gemeinsam von ANSI und IEEE unter der Nummer IEEE 754 1985 verabschiedet 1 1989 erschien die internationale Fassung unter der Nummer IEC 60559 1989 Die Norm definiert zwei Grunddatenformate fur binare Gleitkommazahlen mit 32 Bit single precision bzw 64 Bit double precision Speicherbedarf und zwei erweiterte Formate Unabhangig von IEEE wurden die Prinzipien dieser Darstellungsformate verwendet um weitere Darstellungsformate zu definieren die umgangssprachlich ebenfalls als IEEE Zahlen bezeichnet werden obwohl sie nicht von der Norm abgedeckt sind Einige dieser Formate wurden in spateren Ausgaben ubernommen andere wie das 80 Bit Format des Intel 8087 blieben herstellerspezifisch IEEE 754 2008 Bearbeiten Die Uberarbeitung IEEE 754 2008 2 strich das Wort Binary aus dem Namen der Norm so dass noch IEEE Standard for Floating Point Arithmetic ubrig blieb Die Binarformate wurden von single und double in die systematischen binary32 und binary64 umbenannt und um die neuen Formate binary16 und binary128 erganzt Die neuen Dezimalformate decimal32 decimal64 und decimal128 wurden aus der verwandten Norm IEEE 854 1987 Standard for radix independent floating point arithmetic ubernommen Die mathematischen Grundlagen und Modellierungen wurden expliziter und praziser ausformuliert IEEE 754 2019 Bearbeiten Die Uberarbeitung IEEE 754 2019 3 wurde gegenuber 2008 nur geringfugig uberarbeitet sie enthalt hauptsachlich Klarstellungen behebt erkannte Probleme und empfiehlt zusatzliche Rechenoperationen Allgemeines BearbeitenDer numerische Wert x displaystyle x nbsp einer Gleitkommazahl ergibt sich aus der Formel s m b e displaystyle s cdot m cdot b e nbsp mit den 4 Bestandteilen Vorzeichen s displaystyle s nbsp entweder 1 displaystyle 1 nbsp oder 1 displaystyle 1 nbsp Mantisse m displaystyle m nbsp Basis b displaystyle b nbsp entweder 2 oder 10 Exponent e displaystyle e nbsp Um eine Gleitkommazahl bitweise zu speichern wird sie in 3 Bitfolgen zerlegt S displaystyle S nbsp 1 Bit fur das Vorzeichen M displaystyle M nbsp p displaystyle p nbsp Bits fur die Mantisse E displaystyle E nbsp r displaystyle r nbsp Bits fur den ExponentenDas Vorzeichen s displaystyle s nbsp wird in einem Bit S displaystyle S nbsp gespeichert dabei markiert S 0 displaystyle S 0 nbsp positive Zahlen und S 1 displaystyle S 1 nbsp negative Zahlen Der Exponent e displaystyle e nbsp wird als nichtnegative Binarzahl E displaystyle E nbsp E displaystyle E nbsp wird manchmal auch als Charakteristik oder biased exponent bezeichnet gespeichert indem man den festen Biaswert B displaystyle B nbsp addiert E e B displaystyle E e B nbsp Der Biaswert engl Verzerrung berechnet sich durch 2 r 1 1 displaystyle 2 r 1 1 nbsp Der Biaswert B displaystyle B nbsp dient dazu dass negative Exponenten durch eine vorzeichenlose Zahl die Charakteristik E displaystyle E nbsp gespeichert werden konnen unter Verzicht auf alternative Kodierungen wie z B das Zweierkomplement vergleiche auch Exzesscode Die Mantisse 1 m lt 2 displaystyle 1 leq m lt 2 nbsp ist ein Wert der sich aus den p displaystyle p nbsp Mantissenbits mit dem Wert M displaystyle M nbsp als m 1 M 2 p displaystyle m 1 M 2 p nbsp berechnet Einfacher ausgedruckt denkt man sich an das Mantissenbitmuster M displaystyle M nbsp links eine 1 angehangt m 1 M displaystyle m 1 M nbsp s 1 S displaystyle s 1 S nbsp e E B displaystyle e E B nbsp m 1 M 1 M 2 p displaystyle m 1 M 1 M 2 p nbsp Dieses Verfahren ist moglich weil durch Normalisierung s u die Bedingung 1 m lt 2 displaystyle 1 leq m lt 2 nbsp fur alle darstellbaren Zahlen immer eingehalten werden kann Da dann die Mantisse immer links mit 1 beginnt braucht dieses Bit nicht mehr gespeichert zu werden Damit gewinnt man ein zusatzliches Bit Genauigkeit Fur Sonderfalle sind zwei Exponentenwerte mit speziellen Bitmustern reserviert der Maximalwert E 11 111 2 2 r 1 displaystyle E 11 dots 111 2 2 r 1 nbsp und der Minimalwert E 00 000 2 0 displaystyle E 00 dots 000 2 0 nbsp Mit dem maximalen Exponentenwert werden die Sonderfalle NaN und kodiert Mit Null im Exponenten werden die Gleitkommazahl 0 und alle denormalisierten Werte kodiert Werte ausserhalb des normalen Wertebereichs zu grosse bzw zu kleine Zahlen werden durch bzw dargestellt Diese Erweiterung des Wertebereichs erlaubt auch im Falle eines arithmetischen Uberlaufs haufig ein sinnvolles Weiterrechnen Neben der Zahl 0 existiert noch der Wert 0 Wahrend 1 0 displaystyle tfrac 1 0 nbsp das Ergebnis liefert ergibt 1 0 displaystyle tfrac 1 0 nbsp den Wert Bei Vergleichen wird zwischen 0 und 0 nicht unterschieden Die Werte NaN fur engl not a number keine Zahl werden als Darstellung fur undefinierte Werte verwendet Sie treten z B auf als Ergebnisse von Operationen wie 0 0 displaystyle tfrac 0 0 nbsp oder displaystyle infty infty nbsp auf NaN werden in Signal NaN signalling NaN NaNs fur Ausnahmebedingungen und stille NaN quiet NaN NaNq unterteilt Als letzter Sonderfall fullen denormalisierte Zahlen in IEEE 754r als subnormale Zahlen bezeichnet den Bereich zwischen der betragsmassig kleinsten normalisierten Gleitkommazahl und Null Sie werden als Festkommazahlen gespeichert und weisen nicht dieselbe Genauigkeit auf wie die normalisierten Zahlen Konstruktionsbedingt haben die meisten dieser Werte den Kehrwert Zahlenformate und andere Festlegungen des IEEE 754 Standards BearbeitenIEEE 754 definiert 4 Darstellungen fur binare Gleitkommazahlen sie heissen binary16 binary32 traditionell single binary64 traditionell double und binary128 Zusatzlich erlaubt die Norm auch benutzerdefinierte erweiterte Darstellungen die nach den gleichen Prinzipien konstruiert sind wie die vordefinierten Darstellungen Vor allem die Anzahl der Exponentenbits legt Maximum und Minimum der darstellbaren Zahlen fest Die Anzahl der Mantissenbits bestimmt die relative Genauigkeit dieser Zahlen und nur in geringem Mass das Maximum und das Minimum Typ Grosse 1 r p Exponent r Mantisse p Werte desExponenten e Biaswert B binary16 16 bit 5 bit 10 bit 14 e 15 15binary32 32 bit 8 bit 23 bit 126 e 127 127binary32extended 43 bit 11 bit 31 bit emin 1022 emax 1023 nichtspezifiziertbinary64 64 bit 11 bit 52 bit 1022 e 1023 1023binary64extended 79 bit 15 bit 63 bit emin 16382 emax 16383 nichtspezifiziertbinary128 128 bit 15 bit 112 bit 16382 e 16383 16383Fur die angegebenen Formate ergibt sich die folgende Beschrankung des jeweiligen Zahlenbereichs die mit der Maschinengenauigkeit ϵ displaystyle epsilon nbsp bemessen wird Die betragsmassig kleinsten Zahlen sind hierbei nicht normalisiert Der relative Abstand zweier Gleitkommazahlen ist grosser als ϵ displaystyle epsilon nbsp und kleiner gleich 2 ϵ displaystyle 2 epsilon nbsp Konkret ist der Abstand und in diesem Fall auch der relative Abstand der Gleitkommazahl 1 displaystyle 1 nbsp zur nachstgrosseren Gleitkommazahl gleich 2 ϵ displaystyle 2 epsilon nbsp Dezimalstellen beschreibt die Anzahl der Stellen einer Dezimalzahl die ohne Genauigkeitsverlust gespeichert werden konnen Die Mantisse ist rechnerisch durch das implizite Bit um eins grosser als gespeichert Typ ϵ displaystyle epsilon nbsp Dezimal stellen betragsmassig kleinste Zahl grosste Zahlnormalisiert denormalisiertbinary32 2 23 1 6 0 10 8 0 7 80 2 126 1 2 10 38 2 23 2 126 1 4 10 45 2 2 23 2127 3 4 1038binary32 extended minimum 2 31 1 2 3 10 10 0 9 10 2 1022 2 2 10 308 2 31 2 1022 1 0 10 317 2 2 31 21023 1 8 10308binary64 2 52 1 1 1 10 16 15 16 2 1022 2 2 10 308 2 52 2 1022 4 9 10 324 2 2 52 21023 1 8 10308binary64 extended minimum 2 63 1 5 4 10 20 19 20 2 16382 3 4 10 4932 2 63 2 16382 3 7 10 4951 2 2 63 216383 1 2 104932 nbsp Single in big endian DarstellungDie Anordnung der Bits einer binary32 zeigt die nebenstehende Abbildung Die bei einer Rechenanlage konkrete Anordnung der Bits im Speicher kann von diesem Bild abweichen und hangt von der jeweiligen Bytereihenfolge little big endian und weiteren Rechnereigenheiten ab Die Anordnung mit Vorzeichen Exponent Mantisse in genau dieser Reihenfolge bringt innerhalb eines Vorzeichenbereiches die dargestellten Gleitkommawerte in dieselbe Reihenfolge wie die durch dasselbe Bitmuster darstellbaren Ganzzahlwerte Damit konnen fur die Vergleiche von Gleitkommazahlen dieselben Operationen wie fur die Vergleiche von ganzen Zahlen verwendet werden Kurz die Gleitkommazahlen konnen lexikalisch sortiert werden Hierbei ist jedoch zu beachten dass fur steigende negative Ganzzahlwerte der entsprechende Gleitkommawert gegen minus unendlich geht die Sortierung also umgekehrt ist Interpretation des Zahlenformats BearbeitenDie Interpretation hangt von dem Exponenten ab Zur Erlauterung wird mit S der Wert des Vorzeichenbits 0 oder 1 mit E der Wert des Exponenten als nichtnegative ganze Zahl zwischen 0 und Emax 11 111 2r 1 mit M der Wert der Mantisse als nichtnegative Zahl und mit B der Biaswert bezeichnet Die Zahlen r und p bezeichnen die Anzahl der Exponentenbits und Mantissenbits Charakteristik Mantisse M Bedeutung Salopp BezeichnungE 0 M 0 1 S 0 0 Null gehort zu denorm E 0 M gt 0 1 S M 2p 21 B 0 M 21 B denormalisierte Zahl0 lt E lt 2r 1 M gt 0 1 S 1 M 2p 2E B 1 M 2E B normalisierte ZahlE 2r 1 M 0 Unendlich UnendlichE 2r 1 M gt 0 keine Zahl keine Zahl NaN Null Bearbeiten Null reprasentiert die vorzeichenbehaftete Null Auch Zahlen die zu klein sind um dargestellt zu werden Unterlauf werden auf Null gerundet Ihr Vorzeichen bleibt dabei erhalten Negative kleine Zahlen werden so zu 0 0 gerundet positive Zahlen zu 0 0 Beim direkten Vergleich werden jedoch 0 0 und 0 0 als gleich angesehen Normalisierte Zahl Bearbeiten Die Mantisse besteht aus den ersten n wesentlichen Ziffern der Binardarstellung der noch nicht normalisierten Zahl Die erste wesentliche Ziffer ist die hochstwertige d h am weitesten links stehende Ziffer die von 0 verschieden ist Da eine von 0 verschiedene Ziffer im Binarsystem nur eine 1 sein kann muss diese erste 1 nicht explizit abgespeichert werden gemass der Norm IEEE 754 werden nur die folgenden Ziffern gespeichert die erste Ziffer ist eine implizite Ziffer oder ein implizites Bit engl hidden bit Dadurch wird gewissermassen 1 Bit Speicherplatz gespart Denormalisierte Zahl Bearbeiten Ist eine Zahl zu klein um in normalisierter Form mit dem kleinsten von Null verschiedenen Exponenten gespeichert zu werden so wird sie als denormalisierte Zahl gespeichert 4 Ihre Interpretation ist nicht mehr 1 mantisse 2exponent sondern 0 mantisse 2de Dabei ist de der Wert des kleinsten normalen Exponenten Damit lasst sich die Lucke zwischen der kleinsten normalisierten Zahl und Null fullen Denormalisierte Zahlen haben jedoch eine geringere relative Genauigkeit als normalisierte Zahlen die Anzahl der signifikanten Stellen in der Mantisse nimmt zur Null hin ab Ist das Ergebnis oder Zwischenergebnis einer Rechnung kleiner als die kleinste darstellbare Zahl der verwendeten endlichen Arithmetik so wird es im Allgemeinen auf Null gerundet das nennt man Unterlauf der Gleitkommaarithmetik engl underflow Da dabei Information verloren geht versucht man Unterlauf nach Moglichkeit zu vermeiden Die denormalisierten Zahlen in IEEE 754 bewirken einen allmahlichen Unterlauf engl gradual underflow indem um die 0 herum 224 fur single bzw 253 fur double Werte eingefugt werden die alle denselben absoluten Abstand voneinander haben und ohne diese denormalisierten Werte nicht darstellbar waren sondern zu Unterlauf fuhren mussten Prozessorseitig sind denormalisierte Zahlen aufgrund ihres proportional seltenen Auftretens mit wenig Prioritat implementiert und fuhren deswegen zu einer deutlichen Verlangsamung der Ausfuhrung sobald sie als Operand oder als Ergebnis einer Berechnung auftauchen Um Abhilfe z B fur Computerspiele zu schaffen bietet Intel seit SSE2 die nicht IEEE 754 konforme Funktionalitat an denormalisierte Zahlen vollstandig zu deaktivieren MXCSR Optionen flush to zero und denormals are zero Gleitkommazahlen die in diesen Bereich gelangen werden auf 0 gerundet 5 Unendlich Bearbeiten Der Gleitkommawert Unendlich reprasentiert Zahlen deren Betrag zu gross ist um dargestellt zu werden Es wird zwischen positiver Unendlichkeit und negativer Unendlichkeit unterschieden Die Berechnung von 1 0 0 0 ergibt nach Definition von IEEE 754 positiv Unendlich Keine Zahl NaN Bearbeiten Damit werden ungultige oder nicht definierte Ergebnisse dargestellt z B wenn versucht wurde die Quadratwurzel aus einer negativen Zahl zu berechnen Einige unbestimmte Ausdrucke haben als Ergebnis keine Zahl zum Beispiel 0 0 0 0 oder Unendlich Unendlich Ausserdem werden NaNs in verschiedenen Anwendungsbereichen benutzt um Kein Wert oder Unbekannter Wert darzustellen Insbesondere der Wert mit dem Bitmuster 111 111 wird oft fur eine nicht initialisierte Gleitkommazahl benutzt IEEE 754 fordert zwei Arten von Nichtzahlen stille NaN NaNq quiet und signalisierende NaN NaNs signalling Beide stellen explizit keine Zahlen dar Eine signalisierende NaN lost im Gegensatz zu einer stillen NaN eine Ausnahme Trap aus wenn sie als Operand einer arithmetischen Operation auftritt IEEE 754 ermoglicht dem Anwender das Deaktivieren dieser Traps In diesem Falle werden signalisierende NaN wie stille NaN behandelt Signalisierende NaN konnen genutzt werden um uninitialisierten Rechnerspeicher zu fullen so dass jedes Verwenden einer uninitialisierten Variable automatisch eine Ausnahme auslost Stille NaN ermoglichen den Umgang mit Rechnungen die kein Ergebnis erzeugen konnen etwa weil sie fur die angegebenen Operanden nicht definiert sind Beispiele sind die Division Null durch Null oder der Logarithmus aus einer negativen Zahl Stille und Signalisierende NaN unterscheiden sich im hochsten Mantissenbit Bei stillen NaN ist dieses 1 bei signalisierenden NaN 0 Die ubrigen Mantissenbits konnen zusatzliche Informationen enthalten z B die Ursache der NaN Dies kann bei der Ausnahmebehandlung hilfreich sein Allerdings schreibt der Standard nicht fest welche Informationen in den ubrigen Mantissenbits enthalten sind Die Auswertung dieser Bits ist daher plattformabhangig Das Vorzeichenbit hat bei NaN keine Bedeutung Es ist nicht spezifiziert welchen Wert das Vorzeichenbit bei zuruckgegebenen NaN besitzt Beispiel Umwandlung von Dezimalbruch in binary32 Bearbeiten Der Dezimalbruch 18 4 soll in die Darstellung binary32 umgewandelt werden Bestimmen des Exponenten 18 4 liegt zwischen den Zweierpotenzen 16 und 32 daher ist der Exponent 4 und erfullt die Gleichung 18 4 1 m m m m m m m m 2 4 displaystyle 18 4 1 mmmmmmmm cdot 2 4 nbsp Bestimmen des Bias Wertes fur den Exponenten E e 127 131 displaystyle E e 127 131 nbsp in binar 1000 0011 Normalisieren der Mantisse 18 4 wird durch 2 4 displaystyle 2 4 nbsp geteilt und ergibt 1 15 Umwandlung des Nachkommateils in Binar 0 15 wird mit 2 23 displaystyle 2 23 nbsp malgenommen 1 258 291 2 und auf eine ganze Zahl gerundet Die ganze Zahl wird ins Binarsystem umgewandelt 001 0011 0011 0011 0011 0011 und in den Ziffern der Mantisse gespeichert Die Bitfolgen fur das Vorzeichen 0 den Exponenten 1000 0011 und die Mantisse 001 0011 0011 0011 0011 0011 werden verkettet 0100 0001 1001 0011 0011 0011 0011 0011 Beispiel Umwandlung von binary32 in Dezimalbruch Bearbeiten Die binary32 Gleitkommazahl mit der Bitfolge 0100 0001 1001 0011 0011 0011 0011 0011 soll in einen Dezimalbruch umgewandelt werden Das Format binary32 zerlegt diese Bitfolge in die 3 Teile S 0 displaystyle S 0 nbsp E 1000 0011 2 displaystyle E 1000 0011 2 nbsp M 001 0011 0011 0011 0011 0011 2 displaystyle M 001 0011 0011 0011 0011 0011 2 nbsp Das Vorzeichenbit ist 0 daher ist die Zahl 0 oder positiv Die Bits des Exponenten sind weder alle 0 noch alle 1 daher handelt es sich um eine normalisierte Zahl Der gespeicherte Wert des Exponenten wird ins Dezimalsystem umgerechnet es ergibt sich E 131 displaystyle E 131 nbsp Aus dem gespeicherten Exponenten und dem Bias wird der tatsachliche Exponent berechnet e E B i a s 131 127 4 displaystyle e E mathit Bias 131 127 4 nbsp Da es sich um eine normalisierte Zahl handelt wird die Mantisse links um die implizite 1 erganzt es ergibt sich 1001 0011 0011 0011 0011 0011 2 displaystyle 1001 0011 0011 0011 0011 0011 2 nbsp Die erganzte Mantisse wird als Ganzzahl interpretiert und ins Dezimalsystem umgerechnet es ergibt sich 9 646 899 displaystyle 9 646 899 nbsp Die Mantisse wird durch 2 23 displaystyle 2 23 nbsp geteilt es ergibt sich m 1 149 999 976 158 142 089 843 75 displaystyle m 1 149 999 976 158 142 089 843 75 nbsp Der Wert der Gleitkommazahl ist 1 S 2 e m displaystyle 1 S cdot 2 e cdot m nbsp also 1 16 1 149 999 976 158 142 089 843 75 18 399 999 618 530 273 437 5 displaystyle 1 cdot 16 cdot 1 149 999 976 158 142 089 843 75 18 399 999 618 530 273 437 5 nbsp Die in diesem Bereich exakt darstellbaren Zahlen im Format binary32 sind 18 399 997 711 181 640 625 18 399 999 618 530 273 437 5 18 400 001 525 878 906 25Da die gerundete Dezimalzahl 18 4 naher an der mittleren Zahl liegt als an der nachstgrosseren ist die kurzeste eindeutige Dezimaldarstellung fur die Zahl die 18 4 Rundungen BearbeitenIEEE 754 unterscheidet zunachst zwischen binaren Rundungen und binar dezimalen Rundungen bei denen geringere Qualitatsforderungen gelten Bei binaren Rundungen muss zur nachstgelegenen darstellbaren Zahl gerundet werden Wenn diese nicht eindeutig definiert ist genau in der Mitte zwischen zwei darstellbaren Zahlen wird so gerundet dass das niederwertigste Bit der Mantisse 0 wird Statistisch wird dabei in 50 der Falle auf in den anderen 50 der Falle abgerundet so dass die von Knuth beschriebene statistische Drift in langeren Rechnungen vermieden wird Eine zu IEEE 754 konforme Implementierung muss drei weitere vom Programmierer einstellbare Rundungen bereitstellen Rundung gegen Unendlich immer aufrunden Rundung gegen Unendlich immer abrunden und Rundung gegen 0 Ergebnis immer betragsmassig verkleinern Operationen BearbeitenZu IEEE 754 konforme Implementierungen mussen Operationen fur Arithmetik Berechnung der Quadratwurzel Konversionen und Vergleiche bereitstellen Eine weitere Gruppe von Operationen wird im Anhang empfohlen jedoch nicht verbindlich vorgeschrieben Arithmetik und Quadratwurzel Bearbeiten IEEE 754 verlangt von einer Hardware oder Software Implementierung exakt gerundete Ergebnisse fur die Operationen Addition Subtraktion Multiplikation und Division zweier Operanden sowie der Operation Quadratwurzel eines Operanden Das heisst das ermittelte Ergebnis muss gleich demjenigen sein das bei einer exakten Ausfuhrung der entsprechenden Operation mit anschliessender Rundung entsteht Weiter ist die Berechnung des Restes nach einer Division mit ganzzahligem Ergebnis gefordert Diese Restberechnung ist definiert durch r x y n displaystyle r x y cdot n nbsp n displaystyle n nbsp ganzzahlig n x y lt 1 2 displaystyle n tfrac x y lt tfrac 1 2 nbsp oder bei geradem n displaystyle n nbsp auch n x y 1 2 displaystyle n tfrac x y tfrac 1 2 nbsp Dieser Rest muss ohne Rundung exakt ermittelt werden Konversionen Bearbeiten Konversionen werden zwischen allen unterstutzten Gleitkommaformaten gefordert Bei einer Konversion in ein Gleitkommaformat mit kleinerer Genauigkeit muss wie schon unter Arithmetik beschrieben exakt gerundet werden Zu IEEE 754 konforme Implementierungen mussen Konversionen zwischen allen unterstutzten Gleitkommaformaten und allen unterstutzten ganzzahligen Formaten bereitstellen Die ganzzahligen Formate werden in IEEE 754 jedoch nicht genauer definiert Zu jedem unterstutzten Gleitkommaformat muss eine Operation existieren die diese Gleitkommazahl in die exakt gerundete ganze Zahl im selben Gleitkommaformat konvertiert Schliesslich mussen Konversionen zwischen dem binaren Gleitkommaformat und einem Dezimalformat existieren die genau beschriebenen Mindestqualitatsforderungen genugen Vergleiche Bearbeiten Gleitkommazahlen nach IEEE 754 mussen verglichen werden konnen Die Norm definiert die notwendigen Vergleichsoperationen und fur alle moglichen Sonderfalle vor allem NaN Unendlich und 0 die geforderten Ergebnisse Gegenuber den schulmathematischen Vergleichen kleiner gleich oder grosser kommt als mogliches Ergebnis nach IEEE 754 unordered nicht eingeordnet hinzu wenn einer der Vergleichsoperanden NaN ist Zwei NaN gelten immer als verschieden selbst wenn ihre Bitmuster ubereinstimmen Empfohlene Operationen Bearbeiten Im Anhang der Norm werden zehn weitere Operationen empfohlen Da sie in einer Implementierung im Grunde sowieso benotigt werden lauft diese Empfehlung letztlich darauf hinaus die Operationen an den Programmierer weiterzugeben Diese Operationen sind in C Schreibweise copysign x y invertsign x scalb y n logb x nextafter x y finite x isnan x x y unordered x y class x Die Details der Implementierung vor allem wieder bei den Sonderfallen NaN usw sind ebenfalls vorgeschlagen Ausnahmen Flags und Traps BearbeitenTreten bei der Berechnung Ausnahmen Exceptions auf werden Status Flags gesetzt Im Standard wird vorgeschrieben dass der Benutzer diese Flags lesen und schreiben kann Die Flags sind sticky werden sie einmal gesetzt bleiben sie so lange erhalten bis sie explizit wieder zuruckgesetzt werden Das Uberprufen der Flags ist beispielsweise die einzige Moglichkeit 1 0 Unendlich von einem Uberlauf zu unterscheiden Des Weiteren wird im Standard empfohlen Trap Handler zu ermoglichen Tritt eine Ausnahme auf wird der Trap Handler aufgerufen anstatt das Status Flag zu setzen Es liegt in der Verantwortung solcher Trap Handler das entsprechende Status Flag zu setzen oder zu loschen Ausnahmen werden im Standard in 5 Kategorien eingeteilt Uberlauf Unterlauf Division durch Null ungultige Operation und Ungenau Fur jede Klasse steht ein Status Flag zur Verfugung Literatur BearbeitenIEEE 754 reprinted in SIGPLAN Notices Band 22 Nr 2 Feb 1987 S 9 25 Jean Michel Muller Elementary functions Algorithms and Implementation 2 Auflage Birkhauser Lyon 2006 ISBN 0 8176 4372 9 Weblinks Bearbeiten nbsp Commons IEEE 754 Sammlung von Bildern IEEE 754 1985 IEEE Std 754 2019 vom 22 Juli 2019 IEEE Std 754 2008 PDF Archiviert vom Original am 6 November 2016 abgerufen am 26 Februar 2023 englisch Online Umrechner zwischen Binar und Dezimaldarstellung von IEEE 754 Gleitkommazahlen Zur Geschichte An Interview with the Old Man of Floating Point Reminiscences elicited from William Kahan by Charles Severance William Kahan Lecture Notes on the Status of IEEE Standard 754 for Binary Floating Point Arithmetic 1996 David Goldberg What Every Computer Scientist Should Know About Floating Point ArithmeticEinzelnachweise Bearbeiten IEEE Standard for Binary Floating Point Arithmetic in ANSI IEEE Std 754 1985 S 1 20 12 Okt 1985 doi 10 1109 IEEESTD 1985 82928 IEEE Standard for Floating Point Arithmetic in IEEE Std 754 2008 S 1 70 29 Aug 2008 doi 10 1109 IEEESTD 2008 4610935 IEEE Standard for Floating Point Arithmetic In IEEE Std 754 2019 Revision of IEEE 754 2008 Juli 2019 S 1 84 doi 10 1109 IEEESTD 2019 8766229 ieee org abgerufen am 5 Februar 2020 David Goldberg What Every Computer Scientist Should Know About Floating Point Arithmetic In ACM Computing Surveys 23 Jahrgang 1991 S 5 48 doi 10 1145 103162 103163 englisch sun com abgerufen am 2 September 2010 Shawn Casey x87 and SSE Floating Point Assists in IA 32 Flush To Zero FTZ and Denormals Are Zero DAZ 16 Oktober 2008 abgerufen am 3 September 2010 englisch Abgerufen von https de wikipedia org w index php title IEEE 754 amp oldid 237759794