Contents Up Previous Next

Zweierkomplement

Das Zweierkomplement ist eine Möglichkeit um negative Zahlen im Binärsystem darzustellen. Bei dem Modul wird das Zweierkomplement für die Darstellung negativer Ganzzahlen benötigt. (Interger-Einheitensystem).

Positive Zahlen werden im Zweierkomplement mit einer führenden 0 (Vorzeichenbit) versehen und ansonsten nicht verändert. Negative Zahlen werden mit einer führenden 1 als Vorzeichenbit versehen und wie folgt kodiert: Sämtliche Ziffern der entsprechenden positiven Zahl werden negiert. Zum Ergebnis wird 1 addiert. Beispielhafte Umwandlung der negativen Dezimalzahl -4(dez) ins Zweierkomplement:

  1. Vorzeichen ignorieren und ins Binärsystem umrechnen : 4(dez)=00000100(bin)=0x04(hex)
  2. Invertieren, da negativ : 11111011(bin)=0xFB(hex)
  3. Eins addieren, da negativ : 11111011(bin) + 00000001(bin) = 11111100(bin) = 0xFC(hex)= -4(dez)

Etwas mathematischer:
Ist x eine negative Zahl, so errechnet sich x im Zweierkomplement (x(z)) mit n Stellen wie folgt:

x(z)=2^(n)-|x|
Dementsprechend gilt auch
x(z)+|x|=2^(n)

Da die Module im ,,Integer-Einheitensystem'' immer mit Int32 (4 Byte) arbeiten, lassen sich die Bytefolgen für negative Zahlen x (z.B. -112) einfach wie folgt berechnen:

y=4294967296(dez)-|x|--> y=4294967296_dez-112(dez)=4294967184(dez)
y=0x100000000(hex)-|x|--> y=0x100000000(hex)-0x70(hex)=0xFFFFFF90(hex)