Viele Divisionen haben als Ergebnis eine Zahl mit einer oder mehreren Stellen hinter dem Komma, einige dieser Nachkommazahlen sind sogar unendlich.
Beispiel 1: Teile ich 7 durch 2, so bekomme ich als Ergebnis 3,5 - eine endliche Zahl mit einer Nachkommastelle.
Beispiel 2: Teile ich 10 durch 3, so bekomme ich als Ergebnis 3,33333... - eine unendliche Zahl mit unendlich vielen Nachkommastellen.
Diese Zahlen betrachten wir an späterer Stelle nocheinmal genauer, denn hier kommt es zu einem weiteren Problem in der elektronischen Datenverarbeitung: der ungenauen Darstellung von Nachkommazahlen.
Bei der Multplikation wird ein Links-Shift durchgeführt, dementsprechend ist es logisch, dass bei der Division ein Rechts-Shift durchgeführt wird. Teile ich die Zahl 8 durch 2 ergibt das 4, in Dualschreibweise 00001000 / 00000010 = 00000100. Die Division durch 2 entspricht also einem Rechts-Shift von einer Stelle. Die Division von 8 durch 4 ergibt 2, in Dualschreibweise 00001000 / 00000100 = 00000010, also ein Rechts-Shift von zwei Stellen.
Was passiert nun aber mit Nachkommastellen? Schauen wir uns die einfache Division von 3 durch 2 an. 00000011 / 00000010 = 00000001 Der Rechts-Shift bewirkt, dass die letzte 1 rechts aus dem Zahlenbereich "herausfällt". Das bedeutet, dass alle Nachkommastellen abgeschnitten werden. Wichtig: Es wird nicht gerundet, es wird abgeschnitten. Das Ergebnis aus 3 durch 2 ist also 1!!! Diese Art der Division funktioniert jedoch nur, wenn man durch 2 oder eine Potenz von 2 dividiert. Wir kommen jedoch auch mit unserer ganz normalen "Grundschulmathematik" weiter. Hier ein Beispiel, wie man im Dezimalsystem normalerweise dividiert:
1307/11=118 Rest 9
-11
==
20
-11
==
97
-88
==
9
Wenn man diese Art der Division jetzt nach dem gleichen Schema bei binären Zahlen durchführt, dann kommt man auf das gleiche Ergebnis.
10100011011/1011=01110110 Rest 1001
- 0|||||||
=====|||||||
10100||||||
- 1011||||||
=====||||||
10010|||||
- 1011|||||
=====|||||
1111||||
- 1011||||
=====||||
1001|||
- 0|||
=====|||
10010||
- 1011||
=====||
1111|
- 1011|
=====|
1001
- 0
====
1001
Rechnet man die Dualzahlen jetzt wiederum in binäre Zahlen um, so kommt man wieder auf 1307/11=18 Rest 9 (siehe oben). Auch hier gilt wieder: Der Rest wird gnadenlos abgeschnitten, nicht gerundet. D.h. Der "Rest" entfällt.