Unser Ziel ist es, folgende Wahrheitstabelle durch eine Schaltung umzusetzen:
A | B | Q = A^B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Intuitive Lösung: XOR mit 5 NAND-Gattern
Wir betrachten zunächst die Wertetabelle des XOR-Gatters. Wie in der Vorlesung gezeigt, betrachten wir nur die Zeilen, in denen das Ergebnis eine 1 ist, und konstruieren daraus Logikterme.
A | B | Q = A^B | Logikterm |
| 0 | 1 | 1 | /A * B |
| 1 | 0 | 1 | A * /B |
Aus diesen beiden Termen können wir nun einen Logikterm für das gesamte XOR bestimmen: Q = /A * B + A * /B
- Als ersten Schritt können wir diesen Term als Schaltplan nachbauen, beispielsweise mithilfe des
NAND-Games (siehe Abbildung).
- Diese Schaltung ist allerdings noch nicht minimiert und beinhaltet insgesamt 9
NAND-Gatter. Wir können nun nach und nach die benutzten Bauteile in ihre Komponenten aufteilen (durch die Funktion “Replace with parts”). In Schritt 2 Hier haben wir das OR-Gatter durch seine Bausteine (1×NAND und 2×NOT) ersetzt.
- Analog dazu können wir die
AND-Gatter von der Ausgangsschaltung wiederum mit deren Bausteinen ersetzen.
- Nun können wir durch „gezieltes Hinschauen“ einige Stellen identifizieren, in denen sich Bausteine gegenseitig eliminieren, und andere Stellen, die sich zu einem einzelnen Baustein (beispielsweise ein einzelnes
NAND-Gatter) zusammenfassen lassen.
- Durch diese Vereinfachungen und das Ersetzen der
NOT-Gatter mit den darunterliegenden NAND-Gattern, kommt man auf diese Schaltung mit 5 NAND-Gattern, die die Funktionalität eines XOR-Gatters realisiert.

Bildrechte: © Olav Junker Kjær, The Nand Game
Exkurs: XOR mit 4 NAND-Gattern
Diese Herausforderung ist etwas für Fortgeschrittene. Keine Sorge, falls ihr hierzu keine passende Lösung gefunden habt. Die Erklärung sollte dennoch nachvollziehbar sein.
Als Ausgangspunkt nutzen wir folgenden Gedanken:
Wenn A,
dann nicht
A und B,
und nicht
nicht-A und nicht-B, → siehe Schritt 1
oder wenn B,
dann nicht
A und B,
und nicht
nicht-A und nicht-B → siehe Schritt 1
Daraus können wir folgenden Ausdruck ableiten:
| Schritt | Ausdruck | Beschreibung |
| 1 | A*/(A*B)*/(/A*/B)) + B*/(A*B)*/(/A*/B) | /(/A*/B) in beiden Fällen immer TRUE, da A bzw. B gelten |
| 2 | A*/(A*B) + B*/(A*B) | DeMorgan: OR zu NAND |
| 3 | /(/(A*/(A*B))*/(B*/(A*B))) | 4 NAND-XOR → Dopplung von /(A * B) |
Im Schaltplan sieht das folgendermaßen aus:
