Addier- und Subtrahierwerk

Subtraktion in der Zweierkomplement-Arithmetik

Der Aufbau einer solchen Schaltung, die addieren und subtrahieren kann, ist über die Mathematik (Komplementbildung = Ergänzung zu einer anderen Zahl) herzuleiten und soll am Beispiel 6 - 5 = 1 verdeutlicht werden.

Die Überführung der Subtraktion in eine Addition erfolgt wie bereits gesagt über die Komplementbildung, die sich, angewandt auf obiges Beispiel, wie folgt darstellt:

6 + (10 - 5) - 10 =           oder            6 + (9 - 5) - 9 =
          
Bn                                                    Bn - 1

Bn-Komplement:

Im Dezimalsystem wird der Subtrahend auf die nächst höhere Wertigkeit ergänzt (bei einem einstelligen Subtrahenden auf die 10, bei einem zweistelligen auf die 100 usw. ). Um den Ausdruck allgemein zu halten wird für die Basis eines Zahlensystems B und für die Stelle n geschrieben. Im Dezimalsystem wird dieses Komplement als Zehnerkomplement bezeichnet.


Bn-1-Komplement:

Hier wird der Subtrahend auf die höchste Zahl des Ziffernvorrats (abhängig von der Stellenzahl) eines Zahlensystems ergänzt (bei einem einstelligen Subtrahenden auf die 9, bei einem zweistelligen auf die 99 usw.). Dieses Komplement wird als Stellen- oder Neuner-Komplement bezeichnet.

Die Komplementbildung stellt sich im dualen Zahlensystem wesentlich einfacher dar. Zur Erläuterung obiges Bsp. im dualen Zahlensystem:
  
  0  1  1  0
- 0 1 01 1
  0 0 0 1



1 0 0 0 0

- 01 01 01 01 1
0 1 1 1 1 "Borger"
↓ ↓
 Bn Bn-1
0 1 1 0 + (1 0 0 0 0 - 0 1 0 1) - 1 0 0 0 0 =     oder   0 1 1 0 + (1 1 1 1 - 0 1 0 1) - 1 1 1 1 =
↓ ↓
(schwierig wg. "-" ) (schwierig wg. "-")
↓
1 1 1 1
- 0 1 0 1
1 0 1 0 einfach invertieren


Das Bsp. zeigt, dass das Stellenkomplement bzw. im Dualzahlensystem das Einerkomplement nichts anderes als der invertierte Subtrahend ist. Würde die Rechenvorschrift weiter verfolgt, müsste der Minuend und das erhaltene Komplement addiert und der "Borger" von diesem Ergebnis subtrahiert werden; damit wird die Ergänzung zurückgenommen. Die letzte Rechenoperation ist allerdings wieder eine Subtraktion. Eine andere Möglichkeit ist mit diesem Ergebnis in das Zweierkomplement zu wechseln, indem zu dem Einerkomplement eine "1" dazu addiert wird: 

Bn - 1 + 1 = Bn :  

Mit diesem Vorgehen ergibt sich:

  0 1 1 0
+ 1 0 1 0 invertierte Subtrahend
+ 1 +1 wegen Übergang von Bn nach Bn-1 Komplement
1 0 0 0 1

Hiervon ist der "Borger" noch zu subtrahieren. Der Unterschied zum Einerkomplement besteht zuerst in der einfacheren Ausführung der Rechnung und im weiteren in einer einfacheren Umsetzung in eine Schaltung.

  1 0 0 0 1 				    
-
1 0 0 0 0 <=> 1 0 0 0 1
0 0 0 0 1

Der durch die Addition sich ergebende Übertrag entfällt durch die Zurücknahme der Ergänzung. Dies gilt für alle Berechnungen die zu einem positiven Ergebnis führen. Schaltungstechnisch ist die Zurücknahme der Ergänzung dadurch einfach zu realisieren: der Übertrag wird ignoriert (gestrichen).

Weiteres Bsp. mit negativem Ergebnis: 5 - 6 = -1

    0  1  0 1                                0 1 0 1
- 01 11 1 0 <=> + 1 0 0 1
... 1 1 1 1 + 11
1 1 1 1
Wie ist das zu verstehen?


Interpretation des Ergebnisses:

Zunächst ist festzustellen, dass kein Übertrag vorhanden ist. Es handelt sich aber auch um ein Zwischenergebnis, von dem die "geborgten" 1 0 0 0 0 subtrahiert werden müsste.

Exkurs: Darstellung des Beispiels im Dezimalzahlensystem

5 - 6 = 5 + (10 - 6) - 10 =

     5
+ 4 (Bn-Komplement)
9
Zwischenergebnis
- 1 0
- 1 Ergebnis

Auch hier ist das Zwischenergebnis (9) weiter zu bearbeiten, indem der "Borger" (10) zu subtrahieren ist. Das Ergebnis ist eine negative Zahl, die durch das vorangestellte Minuszeichen charakterisiert wird.
Im Dualzahlensystem gibt es keine Sonderzeichen wie + oder - . Daher muss in diesem Zahlensystem die Darstellung einer negativen Zahl über die Aufteilung des Zeichenvorrats erfolgen.
Wie erfolgt dies?
Das Zwischenergebnis 9 im Dezimalsystem ist vergleichbar mit dem Zwischenergebnis 1 1 1 1 im Dualsystem. Beide Zwischenergebnisse stehen für eine negative Zahl (in der Zweierkomplementarithmetik).
Da Sonderzeichen im Dualsystem fehlen, kann das Ergebnis nur über den Betrag interpretiert werden. Dieses wird gebildet, indem vom "Borger" das Zwischenergebnis subtrahiert wird.

  1  0  0  0  0 	                 1 0 0 0 0
- 1 11 11 11 1 <=> + 0 0 0 0
0 0 0 0 1
+ 1
1


Fazit: Positive duale Zahlen erkennt man an der "0" in der werthöchsten Stelle. Negative Zahlen sind an der "1" in der werthöchsten Stelle zu erkennen:


A

B

C

D

Dezimal

0

0

0

0

0

0

0

0

1

1

0

0

1

0

2

0

0

1

1

3

0

1

0

0

4

0

1

0

1

5

0

1

1

0

6

0

1

1

1

7

1

0

0

0

-8

1

0

0

1

-7

1

0

1

0

-6

1

0

1

1

-5

1

1

0

0

-4

1

1

0

1

-3

1

1

1

0

-2

1

1

1

1

-1



Jede negative Zahl lässt sich als Dualzahl wie folgt darstellen:

\( -A= \overline{A} +1 \)

Um den Betrag einer negativen Zahl zu ermitteln ist die Vorgehensweise wie folgt:

\( |A|= \overline{-A} +1 \)


Die Umwandlung einer Dualzahl in eine negative Dualzahl und umgekehrt erfolgt also beides nach dem gleichen Algorithmus:

  1. Invertieren
  2. +1 rechnen


Die durch die mathematische Betrachtung gewonnene Lösung gilt es nun in eine Digitalschaltung umzusetzen! Diese muss für die Subtraktion die Möglichkeit enthalten den Subtrahenden zu invertieren, eine "1" aufaddieren, um das Bn-Komplement (Zweierkomplement) zu erhalten bzw. für die Addition dieses Verfahren auszuschalten:


Erweitertes Addier-/Subtrahierwerk

Diese Schaltung realisiert die zuvor gestellte Forderung, die Subtraktion auf eine Addition zurückzuführen.
Zu dem zuletzt betrachteten Volladdierer sind die Erweiterungen mit XOR- und AND-Schaltungen hinzugekommen. Die Funktionen der zusätzlichen Schaltungen werden über die Steuerleitungen festgelegt. Dadurch verändert sich das Verhalten der Schaltung insgesamt.

Erweitertes Addier-/Subtrahierwerk

Überprüfen Sie die möglichen Funktionen der Schaltung anhand der beigefügten Wahrheitstabelle, die allerdings nur Auszüge der kompletten Wahrheitstabelle beinhaltet.


SteuereingängeFunktion

X0

X1

X2

X3

Cin


0

0

0

1

0

\( S=A+0 = A \)   =>    A wird durchgeschaltet.

0

0

1

1

0

\( S= A + B \)

0

1

1

1

1

\( S= \overline{A} + B + 1 = B-A \)

0

0

0

1

1

\( S= A + 1 \)

1

0

1

1

1

\( S= A+\overline{B} + 1 = A-B \)


Anmerkung: Die AND-Gatter fungieren hier als steuerbarer Schalter. Die XOR-Gatter fungieren als schaltbare Inverter.


Arbeitsblatt hierzu: https://moodle.eick-at.de/pluginfile.php/355/mod_page/content/16/AddierSubtrahierwerkNichtAusgefuellt.pdf

Last modified: Thursday, 21 January 2021, 12:43 PM