Zahl in IEEE umrechnen

Neue Frage »

Auf diesen Beitrag antworten »
123michi19 Zahl in IEEE umrechnen

Meine Frage:
Hi zusammen,

noch eine Frage zur Umrechnung einer Dezimalzahl in eine Gleitzahl (IEEE)

Die Zahl lautet 18,4.

1) S bestimmen, positives Vorzeichen, daher 0
2) n bestimmen -> n = 4 B = 4+127 = 131 (befinden uns im Binary 32)
In Binär: 10000011_2
3) Mantisse: b = (18,4 / 16) - 1 = 0,15

So, jetzt zu meinem Problem:


Überlauf
0,15*2 = 0
0,30 * 2 = 0
0,6*2 = 1
0,2 * 2 = 0
0,4*2 = 0
0,8*2 = 1
0,6*2 = 1
0,2*2 = 0


Jetzt befinde ich mich in der Lage, dass immer die Gleiche Folge rauskommt. Wie kann ich dies dann in der Mantisse schreiben?



Am Ende heißt es bei mir ja dann:

0 I 10000011 I (hier muss die Mantisse noch hin)

Meine Ideen:
Vielen Dank für Eure Unterstützung :-)
 
Auf diesen Beitrag antworten »
eulerscheZahl

Bis dahin alles richtig.
Ja, das wird periodisch. Du nimmst einfach die ersten 23 Bit der Binärfolge und schreibst sie in die Mantisse. Die Zahl 18,4 kann binär nicht exakt gespeichert werden, was bei Weiterverwendung des Ergebnisses zu Problemen führen kann.

Beispiel:
code:
1:
2:
3:
4:
float summe = 0;
for(int i = 0; i < 1000; i++)
  summe = summe + 0.1;
summe = summe - 100;

in summe steht jetzt nicht 0, sondern -0.000954 (mit g++ kompiliert)
Auf diesen Beitrag antworten »
123michi19

Vielen Dank für deine Antwort. Die 23 Bit sind dann standardmäßig, falls in der Klausur wirklich eine Perioden-Mantisse (gibt es dieses Wort überhaupt großes Grinsen ) kommt?
Auf diesen Beitrag antworten »
eulerscheZahl

Das ist genormt - und das ist auch gut so.
23 Bit Mantisse bei float (32bit Gleitpunktzahl) und 52 Bit bei double (64bit)
 
Auf diesen Beitrag antworten »
123michi19

Top, dankeschön :-)
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »