Negative Dualzahlen (Binär dargestellt): Vorzeichenbit, Einerkomplement, Zweierkomplement

geschrieben von Michael Crass

Dualzahlen sind für die elektronische Datenverarbeitung von großer Bedeutung, da der Computer zwei Zustände gut, d.h. mit einer geringeren Fehlerwahrscheinlichkeit, voneinander unterscheiden kann. Diese zwei Zustände können beispielsweise an und aus, hoch und niedrig oder schwarz und weiß sein. Mit mehreren Einheiten, die an oder aus sind, könnte man bereits positive Zahlen im Dualsystem darstellen.

Um Dualzahlen, also Zahlen, deren Ziffern entweder eine Null oder eine Eins sind, ging es auf Affenspaß.de schon öfter. Dabei wurden allerdings negative Zahlen nicht berücksichtigt.

Nun soll es auch um negative Zahlen gehen – im Kontext der elektronischen Datenverarbeitung. Ziel ist es also beispielsweise die Dezimalzahl -510 dual darzustellen (die tiefgestellte Zahl bezeichnet das Zahlensystem). Es wäre möglich, die 510 in 1012 umzurechnen und wie im Dezimalsystem ein Minus davorzusetzen: -1012

Das Problem dabei ist nun, dass für die Darstellung der -510 im Dualsystem nicht mehr zwei Zeichen ausreichen. Damit wäre diese Darstellung für Computer ungeeignet. Das Vorzeichen muss ebenso in Nullen und Einsen codiert werden und der Computer muss wissen, wie welche Folge von Zeichen aus dem Alphabet (0,1) interpretiert werden muss.

Es gibt einige Codierungen für negative Dualzahlen, hier sind drei Verfahren, darunter auch das populärste.

Vorzeichenbit

Der einfachste Ansatz ist, das erste Bit, also das erste Zeichen aus der Folge von Einsen und Nullen als Vorzeichen zu interpretieren. Wenn der Computer weiß, dass die er eine Folge von Zeichen als Dualzahlen zu interpretieren hat, die nach diesem Schema gebildet wurden, interpretiert er eine 1 an erster Stelle als ein Minus, und eine Null als positve Zahl. Die dreistellige Dualzahl 111 wird nach diesem Schema also als -112 bzw. -310 gelesen. Wenn dieselbe Dezimalzahl auf vier Bits geschrieben wird, lautet sie 1011 und wird weiterhin als -112 bzw. -310 interpretiert. Bei diesem System wird stets die erste Stelle als Vorzeichen gelesen. Diese Methode hat zwei Nachteile: Zum einen kann man damit schlecht rechnen, worauf hier nicht weiter eingegangen wird, und zum anderen gibt es auf diese Weise zwei mögliche Sequenzen, die als Null bzw. Minus Null zu interpretieren sind. Im Dezimalsystem verwenden wir nur eine „positive“ Null und haben damit ein Bitmuster bzw. eine Folge in dieser Codierung, die nicht nützlich ist.

Einerkomplement

Ebenfalls zu einer Minus Null führt die Einerkomplement-Codierung. Hier werden zur Bildung einer negativen Dualzahl alle Ziffern ihres positiven Komplements invertiert. Die negative Dezimalzahl -510 würde man also zunächst in 1012 umwandeln und dann nach der Invertierung 0102 erhalten.

Zu bedenken ist, dass der Zahlenraum eingeschränkt ist. Bei positiven Dualzahlen können mit vier Bits (Stellen) 16 verschiedene Zahlen dargestellt werden (0 – 15). Beim Vorzeichenbit wird eine Stelle für das Vorzeichen genommen und es bleiben nur noch drei Stellen für den Betrag übrig, der allerdings sowohl positiv als auch negativ interpretiert werden kann (-7 – 7). Das sind allerdings nur 15 verschiedene Zahlen, die Null gibt es in dieser Coderung sowohl positiv als auch negativ. Der Zahlenraum des Einerkomplements ist mit dem des Vorzeichenbits identisch.

Zweikomplement

Das Zweierkomplement ist das populärste Verfahren zur Codierung von negativen Dualzahlen und hat einen um eine Zahl größeren Zahlenraum als die beiden vorigen Methoden und unterscheidet sich vom Einerkomplement nur um einen weiteren Schritt. Zunächst werden auch alle Stellen einzeln invertiert und danach wird im Dualsystem eine Eins addiert.

Die Darstellung einer -810 im Zweierkomplement muss zunächst als 810 ins Dualsystem umgerechnet werden (10002) und dann werden, wie im Einerkomplement, alle Ziffern invertiert (01112) und schließlich wird eine 1 hinzuaddiert (10002). Diese Methode hat neben einem einfacheren Addieren von verschiedenen Dualzahlen den Vorteil, dass die Null nicht doppelt codiert wird. Der zweite Schritt verhindert das. Die negative Null verschwindet im Zweierkomplement. Damit ist der darstellbare Zahlenraum von binären Ganzzahlen im Zweierkomplement bei vier Stellen von -8 – 7.

Überschreitet man den Zahlenraum, versucht man bspw. 810 mit vier Bits im Zweierkomplent darzustellen, und schreibt 10002 und der Computer interpretiert sie im Zweierkomplent, ist das Ergebnis -82 statt 82. Genauso funktioniert es nicht, mit vier Stellen im Zweierkomplent die Zahl -92 darzustellen. Man kann zwar umrechnen in 10012, dann invertieren (01102) und eins addieren (01112), aber dann erhält man nach dieser Codierung interpretiert 710.

4-Bit-Zweierkomplement (CC-BY-SA)

Drei Codierungen im Vergleich

So werden vierstellinge Folgen aus Nullen und Einsen nach den drei o.g. Verfahren als Dezimalzahl interpretiert:

Vorzeichenbit Einerkomplement 4-Bit-Binärcode Zweierkomplement unsigned (positive Ganzzahl)
0 0 0000 0 0
1 1 0001 1 1
2 2 0010 2 2
3 3 0011 3 3
4 4 0100 4 4
5 5 0101 5 5
6 6 0110 6 6
7 7 0111 7 7
-0 -7 1000 -8 8
-1 -6 1001 -7 9
-2 -5 1010 -6 10
-3 -4 1011 -5 11
-4 -3 1100 -4 12
-5 -2 1101 -3 13
-6 -1 1110
-2 14
-7 -0 1111 -1 15
Artikelbild: Affenspass.de (CC-BY-SA)

Kommentieren

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .