/ Zahlensysteme & Kodierung

Zweierkomplement

Zweierkomplement-Darstellung einer negativen Zahl als vorzeichenlose Bitfolge: neg = 2^n − pos. Bei n Bits wird so −pos als (2^n − pos) abgebildet.

Zweierkomplement
01 · Eingabe

Zweierkomplement berechnen

Zweierkomplement-Darstellung einer negativen Zahl als vorzeichenlose Bitfolge: neg = 2^n − pos. Bei n Bits wird so −pos als (2^n − pos) abgebildet.

Lösen für
neg = 2^n pos
Bit

Worum geht es?

Das Zweierkomplement ist die Standardkodierung für vorzeichenbehaftete ganze Zahlen in nahezu allen heutigen CPUs. Eine negative Zahl −pos wird in einem n-Bit-Register als die positive Zahl 2^n − pos abgelegt. Dadurch funktioniert die normale Binär-Addition auch über die Null-Grenze hinweg, ohne dass die ALU zwischen Addition und Subtraktion umschalten müsste.

Bonus: Es gibt nur eine Null-Darstellung (im Gegensatz zum Einerkomplement) und das höchstwertige Bit (MSB) zeigt direkt das Vorzeichen an.

Die Formel

Formel Zweierkomplement
neg = 2^n − pos

Umstellungen:
    pos = 2^n − neg
    n   = log₂(pos + neg)

Die Variablen

SymbolBedeutungEinheitErklärung
posPositiver WertBetrag der negativen Zahl (positive Eingabe).
nBitbreiteBitAnzahl Bits des Zielformats (z. B. 8, 16, 32, 64).
negZweierkomplementBitmuster als vorzeichenlose Zahl interpretiert.

Minimal-Beispiel

Bilde das Zweierkomplement von 5 in 8 Bit:

Rechnung −5 in 8 Bit
neg = 2^8 − 5
    = 256 − 5
    = 251         (entspricht 1111 1011₂)

Praxis-Beispiele

Beispiel 1 — Praktische Konstruktion

Alternative Vorgehensweise (ohne Subtraktion):

Rechnung Bitweise
1. pos in Binär:         5 → 0000 0101
2. Alle Bits invertieren:    1111 1010
3. +1 addieren:              1111 1011
Ergebnis: 251 (entspricht −5 in 8 Bit)

Das ist äquivalent zu 2^n − pos.

Beispiel 2 — 16-Bit-Wert

Das Zweierkomplement von 1000 in 16 Bit:

Rechnung −1000 in 16 Bit
neg = 2^16 − 1000
    = 65 536 − 1000
    = 64 536       (entspricht FC18₁₆)

Beispiel 3 — Rückgewinnung des Betrags

Aus dem Bitmuster 0xFF (= 255) in 8 Bit lässt sich der Betrag rekonstruieren:

Rechnung Betrag aus neg
pos = 2^8 − 255
    = 1
⇒ Bitmuster 0xFF entspricht −1