Mantisse einer nicht Gleitkommazahl |
nature6
Jungspund
![](images/star.gif)
Dabei seit: 16.04.2020
Beiträge: 11
![](images/spacer.gif) |
|
|
29.04.2020 14:19 |
|
|
as_string
Haudegen
![](images/star2.gif) ![](images/star2.gif) ![](images/star2.gif)
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
![](images/spacer.gif) |
|
83 (dez) in binär: 101 0011
Komma so weit nach links verschieben, bis vor dem Komma die erste 1 stehen bleibt:
1,010011
Das waren 6 stellen nach links.
Hinter dem Komme ist jetzt die Mantisse: 010011 (die 1 vorm Komma lässt man weg, da muss ja immer eine 1 stehen, wenn man das Komma immer so weit verschiebt, außer die Zahl ist genau 0)
zu der 6 zählt man noch den Exponent Offset dazu, das kommt jetzt drauf an, wieviele Bit der Exponent hat. Angenommen es wären 8 Bit, dann kann man damit ja Zahlen zwischen 0 und 255 darstellen. Um auch negative Zahlen darstellen zu können, verwendet man hier nicht das 2-er-Complement, sondern man zieht addiert zu der Zahl einfach 127 (also 2^7-1) dazu. Wenn man nur 6 Bit für den Exponent hätte, dann würde man 2^5-1, also 31 addieren, also immer "ungefähr" die Hälfte (abgerundet) von der maximal darstellbaren Zahl.
Also hat man 127 + 6 = 133. 133 in Binärdarstellung sind dann 1000 0101
Dann ist die Zahl positiv, also ist das erste Bit 0. Kommt dann so raus:
0 | 10000101 | 01001100000000000000000
Vorzeichen, Exponente und Mantisse. für ein 32-bit IEEE 754 float (also ein single)
Gruß
Marco
|
|
29.04.2020 17:35 |
|
|
nature6
Jungspund
![](images/star.gif)
Dabei seit: 16.04.2020
Beiträge: 11
![](images/spacer.gif) |
|
Hey! danke für die rasche antwort.
damit konnte ich weiter kommen. jetzt stehe ich aber vor einem neuen problem. hoffentlich kennst du zu meiner frage auch die antwort.
ich muss die 0,5 in floating point überführen. dabei stelle ich fest das der ja beim umrechnen nur eine 1 hat, also 0 für das positive vorzeichen und die 1. Also 0.1 ist laut der normalisierung jetzt die 2^{1} oder 2^{0}? Da ich ja im Prinzip die kommastelle gar nicht verschoben habe? Ich gehe mal davon aus das es 2^{0} ist. Jetzt zu meinem Problem, wird jetzt der Bias (127) mit 0 addiert oder mit 0 subtrahiert?
|
|
29.04.2020 21:33 |
|
|
as_string
Haudegen
![](images/star2.gif) ![](images/star2.gif) ![](images/star2.gif)
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
![](images/spacer.gif) |
|
Du musst doch aber das Komma eine Stelle verschieben (diesmal nach rechts), also Exponent ist -1, also als 127-1 = 126 dargestellt, also 0111 1110.
Nochmal kurz: 0,5 dezimal -> 0,1 Dualsystem -> 1*2^(-1)
Gruß
Marco
PS: Die Mantisse ist hier komplett 0, weil die einzige 1 vor dem Komma ja weg gelassen wird.
PPS: Wenn Du Dir unsicher bist: Such mal im Netz nach IEEE 754, da gibt es genug Webseiten, die eine Umwandlung von Dizimal in Gleitkomma machen und manchmal auch noch etwas erklären, wie man drauf kommt und so.
|
|
30.04.2020 15:24 |
|
|
|