Warum Vorzeichen-Betrag-Darstellung nicht ausreicht
Der naheliegende Weg, eine negative Zahl darzustellen, reserviert ein Bit für das Vorzeichen und den Rest für den Betrag — doch dieses Schema erzeugt zwei verschiedene Bitmuster für null (+0 und −0) und zwingt einen Addierer dazu, zuerst die Vorzeichenbits auszuwerten, bevor er entscheiden kann, ob addiert oder subtrahiert wird. Digitale Hardware braucht eine Darstellung, bei der gewöhnliche Addition unabhängig vom Vorzeichen einfach funktioniert.
Das Zweierkomplement
Das Zweierkomplement löst das: Um eine N-Bit-Zahl zu negieren, invertiert man jedes Bit und addiert 1. Bei 4 Bit ergibt das einen Bereich von −8 bis +7, mit genau einer Darstellung für null.
- Beispiel: +3 ist 0011. Invertieren ergibt 1100, plus 1: 1101 ist −3.
- Das oberste Bit verhält sich weiterhin wie ein Vorzeichenbit (0 für nicht-negativ, 1 für negativ), aber gewöhnliche binäre Addition auf Zweierkomplement-Zahlen liefert automatisch das richtige Ergebnis, samt aller Überträge.
Subtraktion als Addition
Da Negation nur „invertieren und 1 addieren" ist, wird A − B zu A + (¬B) + 1 — genau eine Kette von Volladdierern mit invertierten Bits von B und einem anfänglichen Übertrag, der fest auf 1 statt 0 steht. Deshalb enthalten echte ALUs kaum je eine separate Subtrahierschaltung: dieselbe Addierer-Hardware übernimmt beide Operationen, umgeschaltet durch ein einziges Steuersignal, das jedes Bit von B per XOR invertiert und ebenso in den anfänglichen Übertrag eingespeist wird.
In Boolflow ausprobieren
Bauen Sie im Schaltungseditor einen 4-Bit-Addierer, setzen Sie vor jeden B-Eingang ein XOR-Gatter mit einer gemeinsamen Steuerleitung und legen Sie dieselbe Leitung auf den ersten Übertragseingang. Schalten Sie die Steuerleitung um und bestätigen Sie mit dem Wahrheitstabellen-Werkzeug, dass die Schaltung bei 0 A+B und bei 1 A−B berechnet.