Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Technische Informatik (http://www.informatikerboard.de/board/board.php?boardid=7)
--- Mantisse einer nicht Gleitkommazahl (http://www.informatikerboard.de/board/thread.php?threadid=4295)


Geschrieben von nature6 am 29.04.2020 um 14:19:

  Mantisse einer nicht Gleitkommazahl

Ich muss zwei dezimalzahlen miteinander verrechnen, die eine Zahl ist eine durchweg positive Zahl ohne nachkommastelle, die andere hingegen hat nachkommastellen.

Damit ich die zahlen miteinander verrechnen kann nach dem IEEE 754 standard, muss ich wissen was der Exponent und die Mantisse von der nicht gleitkommazahl ist? wie finde ich das bei einer zahl wie 83 raus verwirrt



Geschrieben von as_string am 29.04.2020 um 17:35:

 

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



Geschrieben von nature6 am 29.04.2020 um 21:33:

 

Hey! danke für die rasche antwort. Wink 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? verwirrt



Geschrieben von as_string am 30.04.2020 um 15:24:

 

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.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH