Informatik · Klasse 10–12 · aktualisiert
Zweierkomplement: negative Binärzahlen verstehen
Du lernst, wie Computer negative Zahlen speichern: Wertebereich, Codieren und Decodieren, Addieren, Subtrahieren und Überlauf erkennen.
0 von 9 Aufgaben gelöst
Kurz gesagt
Das Zweierkomplement stellt positive und negative ganze Zahlen im Dualsystem bei fester Bitlänge dar. Ist das höchstwertige Bit 1, ist die Zahl negativ. Bei 8 Bit reicht der Wertebereich von −128 bis +127. Eine Subtraktion wird als Addition gerechnet.
Dein Taschenrechner kennt ein Minuszeichen, ein Computer-Speicher aber nur 0 und 1. Trotzdem rechnet er mit −4 oder −128, und zwar ohne Extra-Zeichen. Wie das geht und wann ein Ergebnis plötzlich falsch wird, lernst du hier.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
4 Abschnitte
Ein Computer speichert Zahlen mit einer festen Anzahl von Bits, zum Beispiel 8 Bit. Das Zweierkomplement ist eine Darstellung für positive und negative ganze Zahlen im Dualsystem. Sie braucht keine Zeichen wie + und −. Dafür muss die Bitlänge fest sein, denn das höchstwertige Bit muss immer dieselbe Bedeutung haben. Das höchstwertige Bit ist das ganz linke Bit.
So erkennst du das Vorzeichen: Ist das höchstwertige Bit 1, ist die Zahl negativ. Ist es 0, ist die Zahl positiv oder null. Die 0 gehört also zu den Mustern mit führender 0. Deshalb reicht der Wertebereich bei n Stellen von -2^{n-1} bis 2^{n-1}-1. Der Wertebereich sind alle Zahlen, die man mit dieser Bitlänge darstellen kann. Es gibt nur eine Darstellung für die Null. Das Zweierkomplement gibt es nur bei Zahlen mit Vorzeichen (signed), nicht bei vorzeichenlosen (unsigned).
Beispiel mit 4 Bit: Hier ist n = 4, der Bereich geht also von -2^3 = -8 bis 2^3-1 = 7. Dazu passt: 0000 ist 0, 0111 ist 7, 1000 ist −8 und 1111 ist −1. Die 4-Bit-Grenzen folgen aus der Formel.
Definition
Zweierkomplement
Eine Darstellung für positive und negative ganze Zahlen im Dualsystem, die keine zusätzlichen Zeichen wie + und − braucht. Sie setzt eine feste Bitlänge voraus.
| Bitbreite | kleinste Zahl | größte Zahl |
|---|---|---|
| 4 Bit | −8 | 7 |
| 8 Bit | −128 | +127 |
| 16 Bit | −32.768 | +32.767 |
Merke: Bei n Bit reicht der Wertebereich von −2^(n−1) bis 2^(n−1)−1. Ist das höchstwertige Bit 1, ist die Zahl negativ.
Teste dich
Positive Zahlen bekommen eine führende 0 (das Vorzeichenbit) und werden sonst nicht verändert. Bei 8 Bit ist 4 also 00000100.
Eine negative Zahl codierst du in drei Schritten: Erst schreibst du den Betrag als Dualzahl auf. Dann negierst du alle Stellen, aus 0 wird 1 und aus 1 wird 0. Zuletzt addierst du 1.
Es gibt einen Handtrick: Fange rechts an. Schreibe alle Nullen und die erste Eins ab. Alle weiteren Stellen invertierst du. Das klappt von negativ nach positiv und auch umgekehrt. Bei 00000100 schreibst du 100 ab und invertierst den Rest. Du erhältst 11111100.
Zum Decodieren schaust du zuerst das erste Bit an. Bei 0 ist die Zahl positiv, und du rechnest wie gewohnt um. Bei 1 ist sie negativ: Du negierst alle Stellen und addierst 1. Dann rechnest du die entstandene positive Zahl ins Dezimalsystem um und setzt ein Minus davor. Beispiel 11111101: negiert 00000010, plus 1 ergibt 00000011, das ist 3. Also ist 11111101 gleich −3.
Ein zweiter Weg: Das höchstwertige Bit zählt negativ, alle anderen Bits zählen wie sonst. Bei 8 Bit sind die Wertigkeiten −128, 64, 32, 16, 8, 4, 2 und 1. So ist 00011010 gleich 16 + 8 + 2 = 26.
Beispiel: −4 mit 8 Bit codieren
- 1Betrag als Dualzahl: 4 = 00000100
- 2Alle Stellen negieren: 11111011
- 31 addieren: 11111011 + 00000001 = 11111100
- 4Ergebnis: 11111100 steht bei 8 Bit für −4
Merke: Codieren: Positiv bekommt eine führende 0. Negativ heißt erst alle Stellen negieren, dann 1 addieren. Decodieren: Erst das erste Bit prüfen.
Teste dich
Der große Vorteil: Du brauchst keine Fallunterscheidung, ob die Zahlen positiv oder negativ sind. Eine Subtraktion rechnest du als Addition: 4 − 3 ist 4 + (−3). Deshalb kann ein Addierwerk auch subtrahieren.
Du addierst einfach die Bitmuster. Entsteht dabei bei 8 Bit eine 9. Stelle, lässt du sie weg. Beispiele: −4 + 3 ergibt 11111100 + 00000011 = 11111111, und das ist −1. Bei 4 + (−4) ergibt 00000100 + 11111100 = 100000000. Ohne die vorderste Eins bleibt 00000000, also 0. Bei 4 − 3 ergibt 00000100 + 11111101 = 100000001. Ohne die 9. Stelle bleibt 00000001, also +1.
Das Weglassen der 9. Stelle funktioniert, solange der Wertebereich nicht verlassen wird. Bei 8 Bit ist das −128 bis +127. Was sonst passiert, siehst du im nächsten Abschnitt.
Definition
Addierwerk
Ein Addierwerk ist eine Schaltung zum Addieren. Im Zweierkomplement kann sie auch subtrahieren, weil die Subtraktion auf eine Addition zurückgeführt wird.
Beispiel: −4 − 3 mit 8 Bit
- 1Umformen: −4 − 3 wird zu −4 + (−3)
- 2−4 = 11111100 und −3 = 11111101
- 3Addieren: 11111100 + 11111101 = 111111001
- 49. Stelle weglassen: 11111001, das ist −7
Merke: Subtrahieren heißt: die negative Zahl addieren. Bei 8 Bit lässt du die 9. Stelle weg, solange das Ergebnis im Bereich −128 bis +127 liegt.
Teste dich
Ein Überlauf entsteht, wenn der Wertebereich der Summe verlassen wird. Beispiel 50 + 80 = 130: Das ist mehr als 127. Die Zahl passt zwar noch in 8 Bit, aber das 8. Bit ist gesetzt, und so erscheint sie fälschlich negativ. Zwei positive Zahlen, deren Summe negativ erscheint, zeigen also einen Überlauf an.
Überlauf und Übertrag sind nicht dasselbe, werden aber oft verwechselt. Bei 4 + (−4) entsteht ein Übertrag in die 9. Stelle (100000000), das Ergebnis 0 ist aber richtig. Dort gibt es keinen Überlauf.
Ein Erkennungsverfahren ist die Vorzeichenerweiterung: Vor der Addition dupliziert man bei beiden Summanden die oberste Stelle und rechnet mit einer Stelle mehr. Unterscheiden sich in der Summe dann die höchstwertige Stelle und die darunter, ist das Ergebnis nicht darstellbar. Es ist ein Überlauf aufgetreten. Sind beide Stellen gleich, passt das Ergebnis. Gegenbeispiel: +4 + (−3) ergibt (0)00000100 + (1)11111101 = (0)00000001. Die 8. und 9. Stelle sind gleich, also kein Überlauf, und +1 stimmt. Die Klammer zeigt die zusätzliche 9. Stelle.
Bei 4 Bit gelten dieselben Regeln mit dem Bereich −8 bis 7. Die 4-Bit-Aufgaben auf dieser Seite sind ausgedachte Beispiele. Ist ein Überlauf aufgetreten, rechnet man je nach Anwendungsfall mit dem um ein Bit breiteren Ergebnis weiter, oder es kommt zu einem Fehlerabbruch. Manche Mikroprozessoren wie der 6502 melden einen Überlauf mit einem eigenen Statusbit.
Beispiel: +4 + 127 mit 8 Bit
- 1Die richtige Summe 131 liegt über 127.
- 2Mit Vorzeichenerweiterung: (0)00000100 + (0)01111111
- 3Summe mit 9 Stellen: (0)10000011
- 4Die 9. Stelle ist 0, die 8. Stelle ist 1. Sie sind verschieden.
- 5Also ist ein Überlauf aufgetreten.
Merke: Überlauf heißt: Die Summe liegt außerhalb des Wertebereichs. Ein Übertrag in die 9. Stelle allein ist noch kein Überlauf.
Teste dich
Alles auf einen Blick
Zweierkomplement
Wertebereich
Bei n Bit von −2^(n−1) bis 2^(n−1)−1, bei 8 Bit von −128 bis +127
Vorzeichen
Ist das höchstwertige Bit 1, ist die Zahl negativ
Codieren
Für eine negative Zahl negierst du alle Stellen der positiven und addierst 1
Rechnen
Eine Subtraktion wird zur Addition, die 9. Stelle fällt bei 8 Bit weg
Überlauf
Die Summe liegt außerhalb des Wertebereichs, ein Übertrag allein reicht nicht
Musteraufgabe · Schritt für Schritt
Ausgedachtes Beispiel: −5 + 3 mit 4 Bit
- 1Annahme: 4 Bit, Wertebereich −8 bis 7. Die Aufgabe ist ausgedacht.
- 2−5 codieren: 5 = 0101, negiert 1010, plus 1 ergibt 1011
- 33 codieren: positiv, also führende 0: 0011
- 4Addieren: 1011 + 0011 = 1110
- 5Decodieren: Das erste Bit ist 1, also negativ. Negiert 0001, plus 1 ergibt 0010, das ist 2, also −2
- 6Probe: −5 + 3 = −2, und −2 liegt im Bereich −8 bis 7, also kein Überlauf
Fehler finden
Prüfe die Aussagen zum Überlauf In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 4Überlauf und Übertrag werden verwechselt. Bei 4 + (−4) entsteht zwar ein Übertrag in die 9. Stelle, das Ergebnis 0 ist aber richtig. Richtig: Hier liegt kein Überlauf vor.
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Bei 8 Bit reicht der Wertebereich von bis +127. Wenn das höchstwertige Bit einer Zahl ist, ist die Zahl negativ. Beim Zweierkomplement wird eine Subtraktion auf eine zurückgeführt.
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback