Darstellung ganzer Zahlen im Binärsystem – Vorzeichendarstellung und Zweierkomplement

Übungsaufgaben zum Zweierkomplement und zum Rechnen im Binärsystem finden sich unter:

 

Als „ganze Zahlen“ bezeichnen wir die natürlichen Zahlen einschließlich der negativen Zahlen; für die Kenntnis einer ganzen Zahl ist somit nicht nur der absolute Zahlenwert nötig, sondern darüber hinaus noch das Vorzeichen (‚+‘ oder ‚-‚). Für diese zwei Möglichkeiten wird ein weiteres Bit an Information benötigt.

Die naheliegende Möglichkeit besteht darin, das Vorzeichen über das führende Bit auszudrücken. Hierbei repräsentiert eine führende 0 den positiven – und eine führende 1 den negativen Zahlenbereich. Diese Darstellung wird als  Vorzeichendarstellung bezeichnet.

Bei einer Breite von 4 Bit erhalten wir folgende Möglichkeiten, positive und negative ganze Zahlen zu repräsentieren:

0000 = +0
1000 = -0
0001 = +1
1001 = -1
0010 = +2
1010 = -2
0011 = +3
1011 = -3
0100 = +4
1100 = -4
0101 = +5
1101 = -5
0110 = +6
1110 = -6
0111 = +7
1111 = -7

Bei näherer Betrachtung hat diese Darstellung jedoch eine Reihe von Nachteilen:

  • Die Zahl 0 wird durch zwei verschiedene Bitfolgen darstellt (als ‚+0‚ und als ‚-0‚).
  • Das Rechnen ist komplizierter geworden. Es ist nicht mehr so einfach möglich, Zahlen untereinander zu schreiben und zu addieren.

Im Folgenden wird eine Variante beschrieben, die diese Probleme vermeidet und deshalb zu einer gebräuchlichen Darstellung geworden ist: die Zweierkomplementdarstellung.

Zweierkomplementdarstellung

Die Zweierkomplementdarstellung ist die gebräuchliche interne Repräsentation ganzer positiver und negativer Zahlen und lässt sich auf sehr einfache Art und Weise abbilden. Im Folgenden wird die Zweierkomplementdarstellung für N = 4 erläutert.

Mit 4 Bits lässt sich ein Zahlenbereich von 24 = 16 ganzen Zahlen abdecken. Der Bereich ist frei wählbar, also z.B. die 16 Zahlen von -8 bis +7. Um Dezimalzahlen über das Zweierkomplement abzubilden, wird von 0 beginnend aufwärts gezählt, bis die obere Grenze +7 erreicht ist. Anschließend wird an der unteren Grenze -8 fortgefahren und aufwärts gezählt, bis die Zahl -1 erreicht ist:

Zahlenstrahl

Aus diesem Verfahren resultiert nun folgende Zuordnung von Bitfolgen zu ganzen Zahlen:

1000 = -8
1100 = -4
0000 = 0
0100 = 4
1001 = -7
1101 = -3
0001 = 1
0101 = 5
1010 = -6
1110 = -2
0010 = 2
0110 = 6
1011 = -5
1111 = -1
0011 = 3
0111 = 7

Nun offenbart sich, wieso der Bereich von -8 bis +7 gewählt wurde und nicht etwa der Bereich von -7 bis +8:

  • Bei dem mit 0 beginnenden Hochzählen wird bei der achten Bitfolge zum ersten Mal das erste Bit zu 1. Springt man also ab der 8. Bitfolge in den negativen Bereich, so hat man die folgende Eigenschaft: Bei den Zweierkomplementzahlen stellt das erste Bit das Vorzeichen dar.
  • Das Zweierkomplement hat zudem den Vorteil, dass die ‚0‘ nur einmal vorkommt.
  • Darstellbar sind mit dem Zweierkomplement die Zahlen von -2N-1 bis 2N-1-1.
  • Zweierkomplementzahlen werden auch als signed binary numbers oder signed integers bezeichnet.



Berechnung des Zweierkomplements

Das Zweierkomplement resultiert aus Bildung des Einerkomplements und anschließender Addition von 1. Das Einerkomplement lässt sich durch bitweises Vertauschen der Werte 0 und 1 erhalten.

Ein Beispiel:
Die Zweierkomplementdarstellung von -6 lässt sich erstellen, indem zuerst die Binärdarstellung von +6, also (0110)2 gebildet wird. Anschließend wird das Einerkomplement – also (1001)2 – generiert und eine 1 addiert. Die Zahl (-6)10 wird im Zweierkomplement somit als Binärzahl (1010)2 ausgedrückt.

Addition von Zweierkomplementzahlen

Da das Bilden des Negativen einer Zahl so einfach ist, lässt sich die Subtraktion auf eine Negation mit anschließender Addition zurückführen.

Um 210 – 610 zu berechnen, addieren wir einfach 2 + (-6).
Das schaut binär so aus:

0010      || = (2)10
+ 1010      || Zweierkomplement von ( -6)10 (s.o.)
———
1100

Das erste Bit (1xxx) zeigt, dass es sich um eine negative Zahl handelt.

Den Betrag der Zahl erhalten wir, indem wir erneut das Zweierkomplement bilden, also zunächst die einzelnen Bits vertauschen (Einerkomplement) und dann 1 addieren:

Einerkomplement von  1100 = 0011

Zweierkomplement –> 0011 + 0001 = 01002 = 410

Zusammen mit der Vorzeicheninformation von eben erhalten wir als Ergebnis der Rechnung also (-4)10.

12 Kommentare on "Darstellung ganzer Zahlen im Binärsystem – Vorzeichendarstellung und Zweierkomplement"


  1. Hallo Jan,
    tolle Seite und verständlich erklärt. Ich habe dennoch noch eine Frage. Stelle ich allen negativen Zahlen eine 1 voran bzw. vor der Inversion eine 0 um dann nach der Inversion eine 1 als negatives Vorzeichen zu bekommen?
    Grüße Steffi

    Antworten

    1. Hi Steffi,

      genau, damit es keine Probleme bei der Umwandlung der Zahl in ihre negative Entsprechung gibt, empfiehlt es sich, die Binärzahl auf das nächsthöhere Nibble mit Nullen aufzufüllen. Anhand der Binärzahl 1110 wird das ganz schön deutlich:

      Positive Binärzahl: 1110 (entspricht der Dezimalzahl 14)
      Aufgefüllte Binärzahl: 0000 1110
      Einerkomplement: 1111 0001
      Zweierkomplement: 1111 0010

      Antworten

  2. Welche Zahl (dezimal) ergibt sich, wenn man mit vorzeichenbehafteten Zahlen
    (Zweierkomplement) und n = 8 Bits arbeitet und versucht, die Rechnung
    76 + 96 durchzuführen?

    Ich finde keine Lösung bitte hilfe 😢

    Antworten

      1. Die Antwort ist nicht ganz korrekt: Die Aufgabe ist mit 8 bit im Zweierkomplement nicht zu lösen, weil der Zahlenbereich überschritten wird (deshalb steht bei Jan eine 1 an erster Stelle – wäre als Komplement zu interpretieren!). Für 8 bit ist im Zweierkomplement der Wertebereich -128 bis +127 – das Ergebnis der Aufgabe ist 172 – liegt außerhalb! Die Berechnung mit 9 bit (-256 bis 255) liefert ein korrektes Ergebnis (immer unter der Voraussetzung, dass man im Zweierkomplement Berechnungen anstellt).

        Antworten

        1. Hallo Klaus,

          ganz lieben Dank für die Korrektur! Ich ergänze das fehlende Bit (bzw. fülle auf das nächsthöhere Nibble auf) in meinem Kommentar.

          Antworten

    1. Hi!

      Auf die Frage „Berechnen sie das zweier-komplement von 0101?“ würde ich folgendes antworten:

      1) 0101 -> auffüllen auf 1 Byte -> 0000 0101
      2) Einerkomplement: 0000 0101 -> 1111 1010
      3) Zweierkomplement: 1111 1010 + 1 = 1111 1011

      Ich hoffe, das hilft Dir weiter!

      Antworten

  3. Hallo,
    schöner Beitrag. Leicht zu verstehen und genau das was ich suchte.

    Ich hätte eine Frage bezüglich einer Aufgabe. Und zwar soll ich die Werte
    Dezimal: Vorzeichen/Betrag
    Dual: Vorzeichen/Betrag, 1er-Komplement und 2er-Komplement
    einer Zahl darstellen die in einem der 4 Formate steht. Nun habe ich für eine Aufgabe folgende Lösungen bekommen (die mit * markierten Zahlen waren vorgegeben):

    Dez Dual
    VZ/Betrag Vz/Betrag 1-er Komp 2-er Komp
    125 0111 1101 *0111 1101 0111 1101
    *-78 1100 1110 1011 0001 1011 0010
    -1 *1000 0001 1111 1110 1111 1111
    -128 nicht darstellbar nicht darstellbar 1000 0000

    Nach dem Durchlesen dieses Beitrags bin ich mir unsicher ob diese Lösung korrekt ist. Muss man eine Positiven Zahlen nicht auch negativ darstellen wenn 1er- oder 2er Komplement gefragt ist? Muss das Vorzeichen Bit nicht auf geswitched werden bei der Umwandlung auf 1er- oder 2er Komplement? Und wieso ist -128 nicht darstellbar im VZ und 1er Komplement?

    Ich hoffe jemand kann mir da weiterhelfen. Schon mal Danke fürs durchlesen

    Antworten

  4. Gute Erklärung, aber ich hab eine Frage:
    Die Aufgabe ist: Das Negative der Hexadezimalzahl A1 entspricht welcher Binärzahl in 10-Bit-Zweierkomplementdarstellung ? mit Rechenweg ?

    Wie bekommt man überhaupt 10-Bit ?

    Vielen Dank im Voraus.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.