Division im IEEE Format

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Division im IEEE Format
Kann mir jemand hier die Division im IEEE Format erklaeren? In den Uebungsfolien findet sich dazu nichts…


Ist das zufällig eine Divison durch eine Zweierpotenz?


Also wie Marcel andeutet, wenn es ne Zweierpotenz ist, läufts auf eine Veränderung des Exponent raus (bsp 3.5/2 in einer 8Bit-Zahl nach IEEE wäre 0|100|1100 / 0|100|0000 = 0|011|1100 , wenn ich mich da nicht verrechnet habe) … aber bei stinknormalen Zahlen wird das schwierich, ich würde da den Umweg über dezimal gehen und dann wieder umwandeln


Ja, wenn es eine Zweierpotenz ist, ist jede multiplikative Operation einfach. Nun zum Fall, dass es keine Zweierpotenz ist, wir also a/b mit a,b IEEE-Zahlen berechnen wollen.

Da a, b IEEE-Zahlen wissen wir:

a = (-1)^(Va) * 2^(Ea - B) * Ma

und

b = (-1)^(Vb) * 2^(Eb - B) * Mb

Wenn wir nun a/b berechnen wollen, müssen wir die Mantissen dividieren. Dies kann zum Beispiel über das Non-Restoring-Divisionsverfahren oder andere Divisionsverfahren getan werden.[1] (Für Klausuren gilt hierbei auf Zweierpotenzen achtgeben und wenn es nicht ausdrücklich untersagt ist, vlt. einen Umweg gehen.
Achtung: Hier muss auf das Zweierkomplement und auf denormalisierte Zahlen aufgepasst werden.
Es ergibt sich:

a/b = (-1)^(Vn) * 2^(Ea - Eb) * (Ma/Mb) = (-1)^(Vn) * 2^((Ea-Eb+B) - B) * (Ma/Mb).

Sprich E(a/b) = Ea - Eb + B, wobei B der BIAS ist. Vn berechnet sich genauso wie bei der Multiplikation also als Va XOR Vb.

Der schwierige Teil ist es die Mantissen zu dividieren, ähnlich wie bei der Multiplikation der schwierige Teil die Multiplikation der Mantissen ist.


ad [1]: Aber die kennengelernten Divisionsverfahren sind doch alle nur für Ganzzahlen. Ja das stimmt. Dennoch kann man ähnlich wie im Dezimalsystem dividieren, indem man den Divisor auf eine Ganzzahl „erweitert“, am Beispiel:

aus 01,0101011 mache 010101011 * 2^(-7) und behandle die 2^(-7) dann getrennt. (Diese Übung wird dem geneigten Leser selbst überlassen)

1 „Gefällt mir“

@yq muesste es nicht heissen a = (-1)^(V_a)(2)^(E_a-B)(1+M_a) sodass fuer c = a/b gilt 1+M_c = (1+M_a)/(1+M_b)

also sei beispielsweise M_a = 011 und M_b = 100 wuerde folgen

1.011/1.100 = 0.111
-0.000

=1.011
-0.110

=0.101
-0.011

= 0.010
-0.001

=…

Anschliessend normalisieren um auf Form 1.M_c zu kommen 1.M_c = 1.110 => M_c = 0.110, da man jetzt M_c 1x geshiftet hat muesste man noch 1 von E_c abziehen E_c := E_c - 1


Ja, mein Ma ist 1 + M’a oder 0 + M’a, je nach Normalisierung von a