Hilfe zu IEEE-754

Dr Franke Ghostwriter
Hey zusammen,

kann mir einer Bitte bei der Umrechnung von Dezimalzahlen in IEEE-754 helfen. Ich bekomme es mit Tschenrechner hin aber leider habe ich absolut keinen Plan wie das Ohne den Taschenrechner klappen soll.

Kann mir da einer helfen und Schritt für Schrit erklären? Ohne Taschenrechner sehe ich da für mich keine Chance.

Beispiel SS14
Stellen Sie die Dezimalzahl Z1 = 22513 im 32-bit-Format des IEEE-754-Standards in
binärer Form dar. Kennzeichnen Sie die unterscheidbaren Bitfelder (Vorzeichen, biased
Exponent, Mantisse).
 
der Zeitfresser ist hierbei die Umwandlung von (22513) Dezimal in die Dualzahl. Am schnellsten geht das, indem du die 2er Potenzen abgrast.

Vorgehensweise:
Rasterung = VORZEICHEN (1) | BIASED-EXPONENT (8) | MANTISSE (Rest)

1.) Dezimalzahl- in Dualzahl umwandeln:
Welche Zweierpotenz ist <= der Dezimalzahl (22513)?
Die 22513 liegt zwischen 2^14 und 2^15, also beginnt die Reise bei 2^14, da 16384 <= 22513. 22513 - 16384 = 6129

Welche Zweierpotenz ist <= der Dezimalzahl (6129)?
2^12 = 4096.
6129 - 4096 = 2033

Welche Zweierpotenz ist <= der Dezimalzahl (2033)?
2^10 = 1024
2033 - 1024 = 1009

... solange, bis du nach den Subtraktionen den Wert 0 erreicht hast.

Jeder Treffer ist eine Duale "1", also 2^14, 2^12, ansonsten eine 0.
Dabei ist die höchste Zweierpotenz das linke erste Bit.
Dualzahl = 101011111110001000000000

Wenn noch Zeit, dann Probe durchführen: 2^14 + 2^12 + 2^10 + 2^9 + 2^8 + 2^7 + 2^6 + 2^5 + 2^4 + 2^0 = 22513

2.) Mantisse Ergebnis aus Punkt „1)“ normalisieren, d. h. das Komma nach vorne hinter die erste Zahl verschieben.

1,01011111110001000000000[,0]

Das sind genau 14 Kommaverschiebungen (= Exponent).

Die Zahl hinter dem Komma ist die Mantisse: 01011111110001000000000
Die Mantisse wird linksbündig in das Raster eingetragen und rechtsbündig mit Nullen aufgefüllt.

3.) biased-Exponent (8 Bit):
Bias + Exponent (Anzahl Kommaverschiebungen) = 127(!) + 14 = 141;
Dezimalzahl 141 in Dualzahl umwandeln (siehe Punkt „1.)“);
biased-Exponent: 1000110

4.) Vorzeichen: Positiv = 0, Negativ = 1

Ergebnis: 01000110101011111110001000000000

In der Musterlösung Klausur-SS14, Aufgabe 3 ist übrigens die Mantisse mit 010100000010010 falsch angegeben.
 
@mad Danke ich hab das recht gut Verstanden und mal paar Zahlen durchgetestet. Hab allerdings paar Unklarheiten meienrseits gefunden evtl. findest du ja noch paar Minuten um mir folgendes zu erklären.

Zahl Z1 = -12345
s = 1 da negativ
e = 10001100 da Exponent 13
m = 01100010100010000...
Ich hatte für 12345 10110001010001,0000... dann das Komma verschoben nach 1,01100010100010000... (13 mal)
Laut https://www.h-schmidt.net/FloatConverter/IEEE754de.html
ist aber folgendes richtig:
1-10001100-10000001110010000000000
s & e sind richtig bei mir aber warum ist die Mantisse so anders? Ist das Vorgehen bei negativen Zahlen anders? Ich geh aktuell davon aus dass der Rechner richtig arbeitet und ich falsch, evtl habe ich ja doch recht^^

Zahl Z2 = 3,5
s = 0 da positiv
e = 10000000 da 127 + Exponent 1
m = 100000....
Da die 3 binär wie folgt aussieht 11,0000 und ich das Komma nur um eine Stelle verschoben habe dachte ich die Mantisse ist 10000.. aber laut dem oberen Link im Rechner ist die Mantisse m = 110000000.... Warum die doppelte 1 am Anfang?

Zahl Z3 = 0,78
s = 0 da positiv
e = 01111111 da 0,x daher 127, ist aber schon falsch, laut Rechner müsste es 126 also e = 01111110 sein, warum ich verschiebe doch nichts oder?
m = 1100011110 usw (kb mehr gehabt)
Vorgegangen bin ich mit der Multiplikation von 2 ... also
0,78 x 2 = 1,56 |1
0,56 x 2 = 1,12 |1
0,12 x 2 = 0,24 | 0
...
Laut Rechner müsste es aber 10001111010 ... sein, also eigentlich wie ich nur wird die erste 1 entfernt, warum in diesem Fall?

Gruß und Danke falls du dir die Mühe machst

Matze
 
OK hab nicht locker gelassen und nochmal alles durchdacht ich denke jetzt passt es, ich komm auf folgende 4 Möglichkeiten:

Ganzzahl
1) s=0 wenn positiv; s=1 wenn negativ
2) Binärdarstellung bis 2^0 dann gedankliches "," setzen
3) Komma verschieben bis hinter die vorderste 1 (Anzahl Schritte = Exponent)
4) e = 127 + Exponent in binär
5) Alles was hinter dem "," ist = m

Fließzahl
1) s=0 wenn positiv; s=1 wenn negativ
2) Binärdarstellung bis 2^0 dann gedankliches "," setzen
3) Komma verschieben bis hinter die vorderste 1 (Anzahl Schritte = Exponent)
4) e = 127 + Exponent in binär
5) Alles was hinter dem "," ist schon vorab in Mantisse (bis 2^0) eintragen
6) Nachkommazahl mit 2 multiplizieren bis Mantisse vollständig ist

0,xxx
1) s=0 wenn positiv; s=1 wenn negativ
2) 0,xxx mit 2 multiplizieren bis die erste 1 kommt
3) Gedankliches "," hinter die erste 1 schieben (Anzahl Schritte = Exponent)
4) e = 127 - Exponent in binär
5) Alles hinter dem gedanklichen "," = m

1,xxx
1) s=0 wenn positiv; s=1 wenn negativ
2) e = 127 in binär
3) Nachkommazahl mit 2 multiplizieren bis Mantisse vollständig ist

Versteht einer was ich meine 😀 und kann es evtl. jemand bestätigen ^^

Gruß
Matze
 
Oben