Darstellung des Exponenten in IEEE-754 Single Precision als Summe?
In der Folie zur Darstellung von IEEE-754 Single Precision Gleitkommazahlen des Profs findet sich folgende Summe zur Berechnung:
wobei dem jeweiligen Bit des Exponenten in binärer Darstellung von j=0 bis j=7 entspricht. Weiterhin steht da, dass sich aus der Summe für den Exponenten folgender Wertebereich ergibt: Daraus ergeben sich für mich folgende Fragen:
Wofür steht "J"? Für die Anzahl der Bits des Exponenten, also 8?
Wie ergibt sich der Wertebereich für diese Summe? Möglicherweise habe ich eine Denkblockade bei der Berechnung, aber ich komme mit der Annahme J=8 auf eine andere.
Vielen Dank für jede Hilfe!
1 Antwort
Ich verstehe nicht, warum man eine unübersichtliche Summenformel hinschreibt, um einfach nur Bits zu addieren. Stimmt die überhaupt ? Müsste die Formel für den Exponenten nicht so heißen ? (Man beachte, dass es ein großes J für die Anzahl der Bits und ein kleines j für den Iterator gibt)
Der Exponent muss natürlich negative und positive Werte annehmen können, da man auch sehr kleine Zahlen darstellen will
Wenn man von diesem speziellen Floating-Point Format nichts weiß, würde man als ITler bei einem 8-bit Exponenten den üblichen Wetebereich von signed integer Zahlen von -128 ... +127 vermuten.
Jedoch liest man hier
https://en.wikipedia.org/wiki/Single-precision_floating-point_format
The single-precision binary floating-point exponent is encoded using an offset-binary representation, with the zero offset being 127; also known as exponent bias in the IEEE 754 standard.
Das heißt, der Nullexponent (Multiplikator 1) wird mit der Zahl 127, dh 2^7 - 1 dargestellt. Daher wird oben die Konstante 2^J - 1 abgezogen
Beispiel die Zahl 1
0 01111111 00000000000000000000000
Die Zahl 2
0 10000000 00000000000000000000000
Die Zahl 0,5
0 01111110 00000000000000000000000
Dort steht außerdem, dass spezielle Werte des Exponenten für die Darstellung von Sonderfällen, wie der Zahl NULL, und +/- unendlich, gebraucht werden, und daher für normale Fließkommazahlen nicht zur Verfügung stehen.
Die Hauptfalle für mich war diese: Ich habe lange gebraucht, um zu kapieren, dass Klein j und Groß J zwei verschiedene Variablen sein sollen. Kommt dies bei Euch öfters vor ? Er hätte ja wenigstens aus Lesbarkeitsgründen für den Summeniterator etwas Anderes, z.B. "n" nehmen können.
Klarstellen sollte man in der Kommunikation auch, ob man vom Exponenten als solches (x) spricht, oder vom Multiplikator, der durch den Exponenten ausgedrückt wird (2^x)
Ich habe vergessen, das dazuzuschreiben bzw darauf hinzuweisen. Normalerweise ist die Benennung etwas eindeutiger aber in diesem Falle erfolgte sie sehr verwirrend.
Die Wertebereichangabe erfolgte explizit für den Multiplikator, nicht den Exponenten.
Dankeschön für die Antwort.
Dass man Spezialfälle für NaN, Infinity und 0 braucht, ist mir bewusst.
Auch ich war der Meinung, dass die Summe in dieser Form, wie sie auf der Folie steht. nicht stimmen kann, sondern anders aussehen muss. Danke