Zweierkomplement

Das Zweierkomplement (auch 2-Komplement, Zweikomplement, K2-Zahl, 2K-Zahl) ist eine Möglichkeit, negative Zahlen im Binärsystem darzustellen. Dabei werden keine zusätzlichen Symbole wie + und - benötigt. Dies ist vor allem für Computer wichtig, deren Logik allein auf Bits, welche entweder wahr oder falsch bzw. 1 oder 0 sind, ausgerichtet ist. Das heißt binäre Zahlen sind Folgen von 0 und 1. Das Zweierkomplement ist die vorherrschende Art, mit der negative ganze Zahlen im Computer dargestellt und mit Hilfe des Rechenwerkes Rechenoperationen durchgeführt werden können.

Da bei binären Kodierungen von negativen Zahlen sowohl Vorzeichen als auch die eigentliche Zahl durch Bits dargestellt werden, ist es wichtig zu wissen, welches Bit wofür verwendet wird. Üblicherweise wird dies erreicht, indem sämtliche Zahlen eine konstante Stellenzahl haben und bei Bedarf mit führenden Nullen aufgefüllt werden. Die unten angeführten Beispiele verwenden je sieben Ziffern für die Kodierung der Zahl und eine Ziffer für die Kodierung des Vorzeichens (8 Bits, das heißt 1 Byte).

Inhaltsverzeichnis

Darstellung und Umwandlung aus dem Dezimalsystem

Das Zweierkomplement benötigt wie das Einerkomplement keine Fallunterscheidung, ob mit negativen oder mit positiven Zahlen gerechnet wird. Das Problem des Einerkomplements, zwei Darstellungen für die Null zu haben, tritt nicht auf. Positive Zahlen werden im Zweierkomplement mit einer führenden 0 versehen und ansonsten nicht verändert.

Negative Zahlen werden mit einer führenden 1 dargestellt und wie folgt kodiert: Sämtliche Ziffern der entsprechenden positiven Zahl werden negiert. Zum Ergebnis wird 1 addiert.

Umwandlung einer negativen Dezimalzahl ins Zweierkomplement:

1. Vorzeichen ignorieren und ins Binärsystem umrechnen: -4(10) = 00000100(2)
 2. Invertieren, da negativ: 11111011
 3. Eins addieren: 11111011 + 00000001 = 11111100
 
 11111100 = -4(10)
 

Weitere Beispiele:

  +4(10) = 00000100
   -4(10) = 11111100
   -1(10) = 11111111
  127(10) = 01111111
 -128(10) = 10000000
 

Durch die im Zweierkomplement verwendete Kodierung wird erreicht, dass nur eine einzige Darstellung der Null existiert, wenn Überläufe abgeschnitten werden.

Zahlenbereich

Folgende Zahlenbereiche können dargestellt werden:

bei 8 Bit:         -128(10)  bis        +127(10)
 bei 16 Bit:      -32768(10)  bis      +32767(10)
 bei 32 Bit: -2147483648(10)  bis +2147483647(10)
 usw.
 

Rechenoperationen

Addition und Subtraktion benötigen keine Fallunterscheidung. Die Subtraktion wird auf eine Addition zurückgeführt.

Beispiel:

-4 + 3 = -1 führt zu 
   11111100 
 + 00000011 
 = 11111111;
 
+4 - 4 = 0 führt zu
    00000100
 +  11111100
 = 100000000
 
 Durch Abschneiden der 1 wird daraus 00000000
 

Umwandlung ins Dezimalsystem

Wenn man eine Zahl vom Zweierkomplement ins Dezimalsystem umkodieren will, muss man folgendermaßen (umgekehrt der Umwandlung vom Dezimalsystem ins Zweierkomplement) vorgehen:

1. Erste Stelle anschauen: wenn Ziffer = 1: Zahl negativ, Ziffer = 0: Zahl positiv
 2. Zahl ist positiv: Umrechnung vom Binärsystem ins Dezimalsystem ist bereits möglich
 3. Zahl ist negativ: Man subtrahiert 1 und negiert die einzelnen Ziffern
    (Dieser Schritt lässt sich für den Menschen vereinfachen: Man negiert zuerst die einzelnen
    Ziffern und addiert hinterher 1, was zu dem selben Ergenis führt)
 4. Die entstandende, entsprechende, positive Zahl im Binärsystem rechnet man ins Dezimalsystem um
 5. Ein "-" vor die Zahl setzen
 

Beispiel:

11111101 invertiert = 00000010
 1 addieren  = 00000011
 00000011 im Dezimalsystem = 3
 3 negiert = -3
 
 11111101 (Zweierkomplement) = -3 (Dezimalsystem)
 

Siehe auch

See also: Zweierkomplement, Addierwerk, Addition, Arithmetic Logical Unit, Binärsystem, Bit, Byte, Computer, Dezimalsystem, Einerkomplement