Rechnen mit Dualzahlen


Das Rechnen gestaltet sich unabhängig vom speziellen System gleich.

Im Folgenden beschränken wir uns auf Dualzahlen.


Addition von Dualzahlen


Man addiert (schriftlich) Dualzahlen so, wie man es von den Dezimalzahlen gewohnt ist: man addiert spaltenweise, mit der rechten Spalte beginnend. Allerdings erfolgt ein Übertrag (rot) nicht bei 10, sondern bereits bei 2, denn diese Ziffer gibt es nicht im Dualsystem.


Beispiel


1 1 1 1 = 1015
+ 1 1 0 = 106
1 1 1
1 0 1 0 1 = 1021

Übung   


+


Subtraktion von Dualzahlen


Um Dualzahlen technisch zu subtrahieren, verwendet man eine alte Idee in der Mathematik: etwas Neues auf etwas Bekanntes zurückführen. Deshalb wird die Subtraktion auf die Addition zurückgeführt. Beispiel: 7 - 5 = 7 + (-5) , statt 5 zu subtrahieren addiert man -5. Dazu müssen negative Zahlen eingeführt werden. Zur Kennzeichnung des Vorzeichens einer Zahl verwendet man häufig das höchste bit.

Verwenden wir 1 Byte = 8 bit als Speicher für eine Dualzahl, können wir damit 28 = 256 verschiedene Zahlen darstellen. Sind die Zahlen nicht vorzeichenbehaftet, umfasst dies den Zahlenraum von 0 bis 255, vorzeichenbehaftet den Zahlenraum von -128 bis +127. Üblicherweise sind Zahlen vorzeichenbehaftet.

Wie werden nun negative Zahlen dargestellt? Nehmen wir unser Beispiel von oben. Die Zahl 105 entspricht in Dualdarstellung 200000101. Nun könnte man naiverweise annehmen , dass -5 durch 10000101 dargestellt wird, also einfach die Darstellung der 5 plus Setzen des höchsten bit. Das ist aber ungünstig, weil wir auf diese Weise die Subtraktion nicht auf die Addition zurückführen können. Denn berechnen wir nun 7 - 5, erhalten wir mit der üblichen Addition: 10001100, also dann dezimal -12!

Um zu einer Darstellung von negativen Zahlen zu gelangen, die unserem Anspruch bzgl der Addtion genügt, überlegen wir, wie -1 dargestellt werden müsste, wenn man 1 - 1 = 0 berechnet. Das sieht dann so aus:


0 0 0 0 0 0 0 1 = 101
+ 1 1 1 1 1 1 1 1 = 10-1
1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 = 100

Das 9. Übertragsbit (in grün) wird verworfen, weil wir für unsere Lösung auch nur 8 bit zur Verfügung haben.

Die Zahl -1 muss dual durch 11111111 ausgedrückt werden! Entsprechend die -2 durch 11111110, damit -2 + 2 = 0 durch die übliche Addition ergibt.

Allgemein lässt sich ein negative Zahl durch das sogenannte Zweierkomplement darstellen: Die positive Zahl in Dualdarstellung wird invertiert (Nullen und Einsen werden getauscht), anschließend wird 1 addiert.


Beispiel: die Zahl -22


0 0 0 1 0 1 1 0 = 1022
1 1 1 0 1 0 0 1 1022 invertiert
+ 0 0 0 0 0 0 0 1 = 101
1
1 1 1 0 1 0 1 0 = 10-22

Anmerkung: Beachtet man nicht den Zahlenraum für ganze Zahlen, kann es passieren, dass die Addtion zweier positiver Zahlen eine negative Zahl ergibt! Man hat dann durch die Addition das höchstwertige bit gesetzt.

Beispiel für 8 bit Zahlen: 64 + 64 = 128. Dual: 01000000 + 01000000 = 10000000. Die Dualzahl 10000000 entspricht aber dezimal -128!


Solange der Minuend nicht größer als der Subtrahend ist, könnten wir auch konventionell schriftlich subtrahieren wie man es mit Dezimalzahlen macht. Der Übertrag verläuft dann in Zweierpotenzen.



Multiplikation/Division von Dualzahlen


Eine Multiplikation mit 2 beispielsweise bedeutet einfach eine Verschiebung um eine Stelle nach links, eine Division einer geraden Zahl durch 2 eine Verschiebung um eine Stelle nach rechts.

Wird die Zahl 106 = 00000110 mit 2 multipliziert, erhält man dadurch 00001100 = 1012.

Man kann gewohnt schriftlich multiplizieren.


Beispiel: 6 * 3 = 18


1 1 0 * 1 1
0 0 Rechnung: 0 * 11
1 1 0 Rechnung: 1 * 11, um eine Stelle verschieben
+ 1 11 1 0 0 Rechnung: 1 * 11, um zwei Stellen verschieben
1 0 0 1 0

Division


Die schriftliche Division verläuft ebenso wie gewohnt.


Als Beispiel dient 18 : 3 = 6


1 0 0 1 0 : 1 1 = 1 1 0
- 1 1 ¦ ¦ Rechnung:110:11=1 und dann 1*11 subtrahieren
1 1 ¦
- 1 1 ¦ nächste Stelle 1 herunterziehen, wieder 11:11=1 und 1*11 subtrahieren
0 0
- 0 Stelle 0 herunterziehen; Rechnung: 0 * 11 = 0; 0 subtrahieren, kein Rest
0