Halbaddierer und Volladdierer
Ein Prozessor kennt nur 0 und 1. Trotzdem kann er beliebig große Zahlen addieren – mit einer Kette aus kleinen Schaltungen, die jeweils nur eine Stelle einer Dualzahl bearbeiten. Hier baust Du diese Schaltungen Schritt für Schritt aus den Logikgattern zusammen und probierst sie direkt aus.
Zwei Bits addieren
Im Dualsystem gibt es nur vier Möglichkeiten, zwei einstellige Zahlen zu addieren. Bei $1 + 1$ reicht eine Stelle nicht mehr: Das Ergebnis ist $2 = 10_2$. Rechts steht die Summe S, links der Übertrag C (englisch carry), der in die nächste Stelle wandert.
Schau Dir die beiden Ziffern getrennt an: Die Summe S ist genau dann 1, wenn genau einer der beiden Summanden 1 ist – das ist das XOR (exklusives Oder). Der Übertrag C ist nur dann 1, wenn beide Summanden 1 sind – das ist das UND.
Der Halbaddierer
Halbaddierer
Zwei Eingänge A und B, zwei Ausgänge: $S = A \oplus B$ (XOR) und $C = A \land B$ (UND). Die Schaltung besteht also aus nur zwei Gattern.
Alle Eingänge stehen auf 0 – beide Ausgänge sind 0.
| A | B | S | C | Rechnung |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 + 0 = 0 = 002 |
| 0 | 1 | 1 | 0 | 0 + 1 = 1 = 012 |
| 1 | 0 | 1 | 0 | 1 + 0 = 1 = 012 |
| 1 | 1 | 0 | 1 | 1 + 1 = 2 = 102 |
„Halb“ heißt er, weil ihm etwas fehlt: Er kann keinen Übertrag von der Stelle rechts daneben aufnehmen. Für die unterste Stelle einer Zahl reicht das – für alle anderen Stellen nicht.
Der Volladdierer
Ab der zweiten Stelle müssen drei Bits zusammengezählt werden: die beiden Ziffern A und B und der Übertrag $C_{in}$ aus der Stelle davor. Drei Einsen ergeben $3 = 11_2$ – also kann auch hier höchstens ein Übertrag $C_{out}$ entstehen.
Den Volladdierer baust Du aus zwei Halbaddierern: Der erste addiert A und B, der zweite addiert zu dessen Summe $S_1$ den Übertrag $C_{in}$. Entsteht in einem der beiden ein Übertrag, wird $C_{out} = 1$ – dafür sorgt ein ODER-Gatter. (Beide Halbaddierer liefern nie gleichzeitig einen Übertrag.)
Alle Eingänge stehen auf 0 – beide Ausgänge sind 0.
| A | B | Cin | S | Cout | Rechnung |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 + 0 + 0 = 0 = 002 |
| 0 | 0 | 1 | 1 | 0 | 0 + 0 + 1 = 1 = 012 |
| 0 | 1 | 0 | 1 | 0 | 0 + 1 + 0 = 1 = 012 |
| 0 | 1 | 1 | 0 | 1 | 0 + 1 + 1 = 2 = 102 |
| 1 | 0 | 0 | 1 | 0 | 1 + 0 + 0 = 1 = 012 |
| 1 | 0 | 1 | 0 | 1 | 1 + 0 + 1 = 2 = 102 |
| 1 | 1 | 0 | 0 | 1 | 1 + 1 + 0 = 2 = 102 |
| 1 | 1 | 1 | 1 | 1 | 1 + 1 + 1 = 3 = 112 |
Volladdierer
$S = A \oplus B \oplus C_{in}$ – die Summe ist 1, wenn eine ungerade Anzahl der Eingänge 1 ist.
$C_{out} = (A \land B) \lor \big(C_{in} \land (A \oplus B)\big)$ – der Übertrag ist 1, wenn mindestens zwei Eingänge 1 sind.
Die zweite Formel lässt sich auch anders schreiben: $C_{out} = (A \land B) \lor (A \land C_{in}) \lor (B \land C_{in})$. Diese „Mehrheitsfunktion“ findest Du mit einem KV-Diagramm: In der Wahrheitstafel stehen vier Einsen, und sie lassen sich zu drei Zweierblöcken zusammenfassen. Nachprüfen kannst Du beide Formeln mit dem Wahrheitstafel-Rechner.
Mehrere Stellen: der 4-Bit-Addierer
Für eine Zahl mit vier Stellen setzt Du vier Volladdierer nebeneinander. Jeder bearbeitet eine Stelle und gibt seinen Übertrag an den Nachbarn links weiter – genau wie beim schriftlichen Addieren. Ganz rechts ist der eingehende Übertrag 0 (dort würde auch ein Halbaddierer genügen).
Alle Eingänge stehen auf 0: 0000 + 0000 = 0000.
Probiere $1111_2 + 0001_2$ aus: Der Übertrag läuft durch alle vier Stellen bis ganz nach links. Das kostet in echter Hardware Zeit, weil jede Stelle auf ihren Vorgänger warten muss. Schnelle Prozessoren berechnen die Überträge deshalb mit zusätzlichen Schaltungen im Voraus.
Überlauf
Mit 4 Bit lassen sich nur die Zahlen 0 bis 15 darstellen. Ist die Summe 16 oder größer, wird der letzte Übertrag $c_4 = 1$. Wird er nicht gespeichert, zeigt der Addierer nur die letzten vier Stellen an – zum Beispiel $9 + 8 = 17 = 10001_2$, angezeigt wird aber $0001_2 = 1$. Das nennt man Überlauf.
Schriftlich addieren im Dualsystem
Von Hand rechnest Du genauso wie die Schaltung: Stelle für Stelle von rechts nach links, und jeden Übertrag schreibst Du klein über die nächste Stelle.
Beispiel: $1101_2 + 0111_2$
| Übertrag | 1 | 1 | 1 | 1 | |
|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | ||
| + | 0 | 1 | 1 | 1 | |
| Summe | 1 | 0 | 1 | 0 | 0 |
Ganz rechts: $1 + 1 = 10_2$, also 0 schreiben und 1 übertragen. Zweite Stelle: $0 + 1 + 1 = 10_2$ – wieder 0, Übertrag 1. Dritte Stelle: $1 + 1 + 1 = 11_2$ – jetzt 1 schreiben und 1 übertragen. Vierte Stelle: $1 + 0 + 1 = 10_2$, und der letzte Übertrag rückt nach vorne.
Ergebnis: $10100_2$. Probe im Zehnersystem: $13 + 7 = 20 = 16 + 4$ ✓
Wie Du Dualzahlen umrechnest und warum $1 + 1 = 10_2$ ist, erklärt die Seite Zahlensysteme.
Typische Fehler
- Beim Halbaddierer für die Summe ein ODER statt XOR nehmen: Dann käme bei $1 + 1$ als Summe 1 heraus statt 0.
- Bei drei Einsen ($1 + 1 + 1$) nur 0 schreiben: Richtig ist $11_2$ – eine 1 bleibt stehen, eine wird übertragen.
- Den Übertrag in die falsche Richtung weitergeben: Er wandert immer zur nächsthöheren Stelle, also nach links.
- Beim 4-Bit-Addierer den Überlauf übersehen: Ist $c_4 = 1$, stimmt die Anzeige nicht mehr mit der wahren Summe überein.
Online üben
Stufe 1: Ausgänge von Gattern und Addierern. Stufe 2: Dualzahlen schriftlich addieren. Stufe 3: 4-Bit-Addierer, Überlauf und Überträge zählen.
Stufe 1: Gatter und Addierer
-
Aufgabe 1
Halbaddierer: \(A = 1,\) \(B = 1.\) Summe S und Übertrag C?\(S; C\)\(S = A \text{ XOR } B = 0,\ C = A \land B = 1\)
-
Aufgabe 2
Welches Gatter liefert beim Halbaddierer den Ausgang Übertrag C? (XOR, UND oder ODER)\(\text{UND}\)
-
Aufgabe 3
Welches Gatter liefert beim Halbaddierer den Ausgang Summe S? (XOR, UND oder ODER)\(\text{XOR}\)
-
Aufgabe 4
Volladdierer: \(A = 1,\) \(B = 1,\) \(C_{in} = 1.\) S und \(C_{out}?\)\(S; C_out\)\(1 + 1 + 1 = 3 = 11_2\ \Rightarrow\ S = 1,\ C_{out} = 1\)
-
Aufgabe 5
Volladdierer: \(A = 0,\) \(B = 1,\) \(C_{in} = 0.\) S und \(C_{out}?\)\(S; C_out\)\(0 + 1 + 0 = 1 = 01_2\ \Rightarrow\ S = 1,\ C_{out} = 0\)
-
Aufgabe 6
Volladdierer: \(A = 1,\) \(B = 1,\) \(C_{in} = 0.\) S und \(C_{out}?\)\(S; C_out\)\(1 + 1 + 0 = 2 = 10_2\ \Rightarrow\ S = 0,\ C_{out} = 1\)
Tippe Deine Lösung ein und klicke auf „Prüfen“ (oder drücke Enter). Brüche als 3/4, Dezimalzahlen mit Komma, mehrere Lösungen mit ; trennen, Potenzen als x^2, Wurzeln als sqrt(5). Punkte: 10 für richtig beim ersten Versuch, 6 nach einem Fehlversuch, 5 mit Tipp, 0 wenn Du Dir vorher die Lösung anschaust. Deine Punkte und Abzeichen siehst Du unter Mein Training.
Arbeitsblatt: Halbaddierer, Volladdierer und Dualaddition
Eine volle DIN-A4-Seite Aufgaben mit Lösungsblatt zum Ausdrucken – bei jedem Klick neue Aufgaben. Klasse 11–13.
Weiterlesen: Halbaddierer, Volladdierer, Carry-Ripple-Addierer bei Wikipedia