ich komme mit dem e (Exponenten) bei der Zahlenumformung nicht klar.
Woher kriege ich den? Kann mir jemand das schrittweise anhand der Aufgabe aus der Übungsklausur erklären?
Aufgabe:
Stellen Sie die Dezimalzahlen Z1 = −53.28125 und Z2 = 77184 im 32-bit-
Format des IEEE-754-Standards in bin¨arer Form dar. Kennzeichnen Sie die
unterscheidbaren Bitfelder (Vorzeichen, baised Exponent, Mantisse).
Comments
ugeen
Contributions on this page: 4
View profileHach jetzt hab ich es auch raus gefunden... man man man, die hätten das aber im Skript auch ruhig mal erklären können!
Sone Sch****....
Für die Nachkommen hier:
Wenn ihr die Dezimalzahl in eine Binärzahl umgerechnet habt, dann ist e (Biased Exponent) gleich der Stellenanzahl, um die ihr das Komma verschieben müsst, bis eine 1 vor dem Komma steht.
Nach links verschieben -> positive Zahl
Nach rechts verschieben -> negative Zahl
Beispiel aus der Übungsklausur oben: 53.28125 in Binär= 110101,01001
Damit eine 1 vor dem Komma steht, muss das Komma 5 Stellen nach links verschoben werden: 1,1010101001
Somit ist e = 5.
Und nochmal ein Warnhinweis: in der KE2 PDF steht "E = e - b" - DAS IST FALSCH! "E = e + b" ist richtig.
ugeen
Contributions on this page: 4
View profileNachtrag nochmal:
Das fett markierte oben ist nicht genau genug: es darf nur noch eine Eins vor dem Komma stehen.
mike-L
Contributions on this page: 1
View profileIch fand die Ausführungen zum Thema IEEE 754 zunächst auch eher verwirrend...
Mir ist dann nach wiederholtem Lesen aufgefallen, dass das 2^(e-b) doch in Ordnung geht, wenn man bedenkt, dass hier das auslesen einer IEE 754- kodierten Dualzahl beschrieben wird.
Es wird also nicht e kodiert sondern der Exponent ausgelesen.
Der Kurstext beschreibt also wie man eine IEEE 754 kodierte Zahl in eine normale Dualzahl umformt...
E=e-b ist also auch richtig... für die EA musste man es aber in
e= E + b umformen....
E = Exponent
e = verschobener Exponent (IEEE 754 kodierter)
man sollte desweiteren bedenken, dass es auch negative Exponenten geben kann (wenn man das Komma nach rechts verschiebt) dann muss man
e= E-b verwenden..
Ich möchte auch noch einmal betonen, dass e nicht einfach die Anzahl der verschobenen Stelle ist, sondern e= 127 +/- Anzahl der verschobenen Stellen.
Bsp: 387,875 in Gleitkommazahl mit einfacher Genauigkeit umformen:
1. Dualzahl bestimmen: 110000011,111
2. Komma um 8 Stellen nach vorn verschieben E = 8
Dualzahl mit Exponent = 1,10000011111 * 2^8
2.1 Eintrag für das Mantissenfeld bestimmen (1 vor dem Komma weglassen) -> 10000011111
3. verschobenen Exponenten bestimmen e= 2^(8-1)-1+8=135 (+ da Komma nach links verschoben)
4. verschobenen Exponenten in Dualzahl umwandeln 135= 10000111
5. VZ ist positiv -> VZ-Feld =0
Es ergibt sich folgende IEE- 754 Zahl:
0[10 000 111][10 000 011 111 000 000 000 000]
ugeen
Contributions on this page: 4
View profileNjaaa, jetzt muss man sich einig werden, wo man das kleine "e" und das große "E" ansetzt. Ich habe aus den Foren und Erklärungen bisher für mich beschlossen, dass E = 127 +/- Anzahl verschobener Stellen. Und e = Anzahl verschobener Stellen.
Somit machts bei mir "E = b + e" -> "e = E -b".
Und beim "nach rechts verschieben" gibt das "E = b -e" => "e=b-E" ...
Stefan Petschko
Contributions on this page: 1
View profileAlso ich mache das immer mit 6 Schritten (ohne Taschenrechner):
Beispiel -53,28125
1. Bias ist 127
2. -53,28125 liegt zwischen 2^5 und 2^6. Wir merken uns die 5
5+bis=132.
3. 132 in binär umwandeln ist [U]10000100[/U]. So das ist schon einmal ein Teilergebnis.
4. Die Zahl 53,28125 in binär umwandeln.
53 ist 1[U]10101[/U] (wir müssen uns aber wegen den vorherigen 2^5 nur 5 Ziffern merken). Also [U]10101[/U] merken, Teil der Lösung.
0,28125 in binär umwandeln. [U]01001[/U]. Merken, auch Teil der Lösung.
5. Da es sich um eine negative Zahl handelt, merken wir uns eine [U]1.[/U]
6. Alles zusammenfügen: 1 (Vorzeichen) 10000100 (aus 3.) 10101 01001 .
Jetzt nur noch den Rest mit Nullen auffüllen.
Beispiel 81920
1. Bist ist 127
2. 81920 liegt zwischen 2^16 und 2^17. Wir merken uns die 16
16+bias=143
3. 143 in binär umwandeln ist [U]10001111[/U] So das ist schon einmal ein Teilergebnis.
4. Die Zahl 81920 in binär umwandeln.1[U]0100000000000000 [/U](wir müssen uns aber wegen den vorherigen 2^1 nur 16 Ziffern merken). Also [U]0100000000000000 [/U]merken, Teil der Lösung.
5. Da es sich um eine positive Zahl handelt, merken wir uns eine [U]0[/U]
6. Alles zusammenfügen: 0 (Vorzeichen) 10001111 (aus 3.) 01000000000000000... (aus 4.) mit Nullen auffüllen