Zahlensysteme: binär, hexadezimal und BCD
Computer, SPS und Mikrocontroller kennen intern nur zwei Zustände: Spannung da oder Spannung nicht da. Aus diesen beiden Zuständen lassen sich aber Adressen, Messwerte, Zeichen und ganze Programme aufbauen — vorausgesetzt, man kennt die Spielregeln. Genau darum geht es in diesem Beitrag.
Dezimalzahlen reichen für die Maschine nicht aus, weil sie zehn unterschiedliche Ziffern bräuchte. Praktisch sind drei andere Systeme: das Binärsystem als direkte Sprache der Hardware, das Hexadezimalsystem als kompakte Schreibweise dafür und der BCD-Code als Brücke zwischen Dezimal- und Maschinenebene.
Vorwissen
- Analoge und digitale Signale
- Potenzen, Wurzeln, Logarithmen
Lernziele
Nach diesem Beitrag kannst du:
- den Aufbau und das Stellenwertprinzip von Dezimal-, Binär- und Hexadezimalsystem erklären
- Zahlen zwischen Dezimal, Binär und Hexadezimal umrechnen
- den BCD-Code vom reinen Binärcode unterscheiden und in beide Richtungen umsetzen
- Binärzahlen addieren und mit dem Zweierkomplement negative Zahlen darstellen
- für eine Anwendung das passende Zahlensystem auswählen (Adressen, Messwerte, Anzeigen)
1. Stellenwertsysteme – die gemeinsame Basis
Jedes Zahlensystem ist im Kern gleich aufgebaut: Es hat eine Basis (auch Radix genannt) und ein Stellenwertprinzip. Die Basis gibt an, wie viele verschiedene Ziffern es gibt. Das Stellenwertprinzip sagt: Jede Position einer Zahl steht für eine Potenz der Basis.
Am vertrauten Dezimalsystem sieht man das sofort. Die Zahl 4 729 zerlegt sich so:
4 729 = 4·10³ + 7·10² + 2·10¹ + 9·10⁰
= 4·1000 + 7·100 + 2·10 + 9·1
Jede Stelle hat ihren eigenen Wert. Die Ziffer ganz rechts ist die niederwertigste Stelle (Stellenwert 10⁰ = 1), jede Stelle weiter links wiegt zehnmal so viel. Genau dieses Prinzip funktioniert auch mit anderen Basen — nur dass dann nicht mit 10 multipliziert wird, sondern mit 2, 16 oder einer beliebigen anderen Zahl.
Im technischen Alltag spielen vier Systeme eine Rolle:
| System | Basis | Ziffern | BCD |
|---|---|---|---|
| Dezimal | 10 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 | 10 codiert in 4 Bit |
| Binär | 2 | 0, 1 | jede Dezimalziffer einzeln binär |
| Hexadezimal | 16 | 0–9, A, B, C, D, E, F |
Eine einzelne binäre Stelle heißt Bit — die kleinste Informationseinheit, sie kennt nur 0 oder 1. Vier Bit werden zu einem Nibble zusammengefasst. Acht Bit ergeben ein Byte, die typische Verarbeitungsbreite vieler Steuerungen.
Die folgende Übersicht zeigt die Werte 0 bis 15 in allen vier Systemen:
| Dezimal | Binär (4 Bit) | Hex | BCD |
|---|---|---|---|
| 0 | 0000 | 0 | 0000 |
| 1 | 0001 | 1 | 0001 |
| 2 | 0010 | 2 | 0010 |
| 3 | 0011 | 3 | 0011 |
| 4 | 0100 | 4 | 0100 |
| 5 | 0101 | 5 | 0101 |
| 6 | 0110 | 6 | 0110 |
| 7 | 0111 | 7 | 0111 |
| 8 | 1000 | 8 | 1000 |
| 9 | 1001 | 9 | 1001 |
| 10 | 1010 | A | 0001 0000 |
| 11 | 1011 | B | 0001 0001 |
| 12 | 1100 | C | 0001 0010 |
| 13 | 1101 | D | 0001 0011 |
| 14 | 1110 | E | 0001 0100 |
| 15 | 1111 | F | 0001 0101 |
Bei BCD springt die Sache schon ab dem Wert 10 auf zwei Nibbles — der Grund dafür folgt in Kapitel 4.
Was beschreibt der Begriff „Basis“ eines Zahlensystems?
- a) Die Anzahl unterschiedlicher Ziffern, mit denen das System arbeitet
- b) Die niederwertigste Stelle einer Zahl
- c) Die maximale Anzahl Stellen einer Zahl
- d) Den Wert der höchsten Ziffer
Richtig: a)
Die Basis (Radix) gibt an, wie viele verschiedene Ziffern existieren — 10 im Dezimalsystem, 2 im Binärsystem, 16 im Hex. Sie hat nichts mit der Stellenzahl oder dem Höchstwert einer konkreten Zahl zu tun.
Eine SPS verarbeitet einen Wert mit einer Breite von 2 Byte. Wie viele Bit sind das?
- a) 8 Bit
- b) 12 Bit
- c) 14 Bit
- d) 16 Bit
Richtig: d)
Ein Byte hat 8 Bit, zwei Byte also 16 Bit. Diese Breite entspricht typischen Datentypen wie WORD oder INT.
Welche Aussage zum Stellenwertprinzip is korrekt?
- a) Jede Stelle hat denselben Wert, nur die Ziffer ändert sich
- b) Jede Stelle wiegt eine Potenz der Basis
- c) Der Stellenwert hängt von der Ziffer ab, nicht von der Position
- d) Das Stellenwertprinzip gilt nur im Dezimalsystem
Richtig: b)
Der Stellenwert ist immer die Basis hoch n, wobei n die Position der Stelle ist (rechte Stelle = 0). Das ist genau der Punkt, der alle Stellenwertsysteme gleich macht — egal ob Dezimal, Binär oder Hex.
2. Binärsystem
Das Binärsystem kommt mit zwei Ziffern aus: 0 und 1. Die Basis is 2, jede Stelle wiegt eine Zweierpotenz. Vom Stellenwertprinzip her ist es genauso aufgebaut wie das Dezimalsystem — nur dass die Stellenwerte 1, 2, 4, 8, 16, 32, 64, 128, 256, … sind statt 1, 10, 100, 1000, …
Binär nach Dezimal
Hier wird Stelle für Stelle der Stellenwert mit der Ziffer multipliziert und alles aufsummiert. Beispiel mit dem Byte 1011 0101:
Bit-Position: 7 6 5 4 3 2 1 0
Stellenwert: 128 64 32 16 8 4 2 1
Bitwert: 1 0 1 1 0 1 0 1
Beitrag: 128 0 32 16 0 4 0 1
Summe: 128 + 32 + 16 + 4 + 1 = 181 (dezimal).
Dezimal nach Binär
Die saubere Methode ist die Division mit Rest: Die Dezimalzahl wird wiederholt durch 2 geteilt, der Rest jeder Division ist ein Bit, beginnend bei der niederwertigen Stelle. Beispiel für 181:
181 : 2 = 90 Rest 1 (Bit 0)
90 : 2 = 45 Rest 0 (Bit 1)
45 : 2 = 22 Rest 1 (Bit 2)
22 : 2 = 11 Rest 0 (Bit 3)
11 : 2 = 5 Rest 1 (Bit 4)
5 : 2 = 2 Rest 1 (Bit 5)
2 : 2 = 1 Rest 0 (Bit 6)
1 : 2 = 0 Rest 1 (Bit 7)
Die Reste von unten nach oben gelesen: 1011 0101. Passt zu unserem Ausgangswert von oben.
Wertebereich
Die Bitbreite legt fest, wie groß die größte darstellbare Zahl wird. Bei n Bit lassen sich 2ⁿ verschiedene Werte darstellen, von 0 bis 2ⁿ − 1:
| Bitbreite | Anzahl Werte | Wertebereich (vorzeichenlos) |
|---|---|---|
| 4 Bit (Nibble) | 16 | 0 … 15 |
| 8 Bit (Byte) | 256 | 0 … 255 |
| 16 Bit (Word) | 65 536 | 0 … 65 535 |
| 32 Bit (Doppelword) | ca. 4,3 Mrd. | 0 … 4 294 967 295 |
N_max = 2^n – 1
- N_max … größter darstellbarer Wert (vorzeichenlos)
- n …… Bitbreite in Bit
Diese Tabelle taucht in der Praxis ständig auf — etwa wenn man eine Variable für einen Zählerwert dimensioniert oder festlegt, wie viele Eingänge ein einziges Byte abbildet.
Gelöstes Beispiel
Rechne die Binärzahl 1100 1010 in eine Dezimalzahl um.
Gegeben: Binärzahl 1100 1010 (8 Bit)
Gesucht: Dezimalwert
Lösungsweg:
- Stellenwerte zuordnen:
Bit: 1 1 0 0 1 0 1 0
Position: 7 6 5 4 3 2 1 0
Wert: 128 64 32 16 8 4 2 1 - Beiträge der gesetzten Bits aufsummieren:
128 + 64 + 8 + 2 = 202
Ergebnis: 1100 1010 binär = 202 dezimal
Übungen
Rechne 0001 1111 binär in Dezimal um.
16 + 8 + 4 + 2 + 1 = 31
Rechne 42 dezimal in eine 8-Bit-Binärzahl um.
42 = 32 + 8 + 2 → 0010 1010
Wie viele unterschiedliche Werte kann eine 12-Bit-Zahl darstellen?
2¹² = 4 096 Werte (Wertebereich 0 … 4 095)
Eine SPS soll Werte von 0 bis 1 000 abbilden. Welche minimale Bitbreite ist nötig?
2⁹ = 512 (zu wenig), 2¹⁰ = 1 024. Es sind mindestens 10 Bit nötig.
Rechne 0111 1101 1010 1011 binär in Dezimal um.
Bitweise auflösen — die gesetzten Bits sind 0, 1, 3, 5, 7, 8, 9, 10, 12, 13, 14. Summe der Stellenwerte: 1 + 2 + 8 + 32 + 128 + 256 + 512 + 1024 + 4096 + 8192 + 16384 = 32 235.
Wie groß ist der größte vorzeichenlose Wert, der mit 12 Bit darstellbar ist?
- a) 2 048
- b) 2 047
- c) 4 095
- d) 8 192
Richtig: c)
Bei n Bit reicht der Bereich von 0 bis 2ⁿ − 1, also 0 bis 4 095. 2¹² = 4 096 ist die Anzahl der Werte, der größte ist um eins kleiner. Antwort b wäre der signed-Höchstwert für 12 Bit, das ist hier aber nicht gefragt.
Welcher dezimale Wert entspricht der Binärzahl 1010 0001?
- a) 161
- b) 162
- c) 165
- d) 171
Richtig: a)
Gesetzte Bits sind an den Positionen 7, 5 und 0. Stellenwerte: 128 + 32 + 1 = 161.
Beim Umrechnen von 53 dezimal in eine Binärzahl per Division mit Rest entsteht folgende Restfolge (von der ersten zur letzten Division): 1, 0, 1, 0, 1, 1. Wie lautet die Binärzahl?
- a) 1, 0, 1, 0, 1, 1 (in Schreibrichtung)
- b) Nullen und Einsen abwechselnd
- c) Nur die erste Stelle entscheidet
- d) 110 101
Richtig: d)
Der erste Rest gehört zur niederwertigsten Stelle. Die Reste werden also von unten nach oben gelesen — aus 1, 0, 1, 0, 1, 1 wird 110 101.
Eine Variable soll vorzeichenlos Werte bis 10 000 zählen. Welche Bitbreite ist die kleinste passende?
- a) 8 Bit
- b) 14 Bit
- c) 16 Bit
- d) 32 Bit
Richtig: b)
2¹³ = 8 192 (zu wenig), 2¹⁴ = 16 384 (passt). 14 Bit reichen also genau aus. In der Praxis wird man trotzdem oft auf 16 Bit (Word) hochrunden, weil das die Hardware besser unterstützt — aber die rechnerisch kleinste Bitbreite ist 14.
3. Hexadezimalsystem
Wer mit Binärzahlen hantiert, merkt schnell: 8 oder 16 Stellen am Stück lesen sich miserabel. Das Hexadezimalsystem ist die Antwort darauf. Es hat die Basis 16, also 16 Ziffern: die bekannten 0 bis 9 und zusätzlich A, B, C, D, E, F für die Werte 10 bis 15. Jede Stelle wiegt eine Sechzehnerpotenz.
Der entscheidende Trick: Eine Hex-Ziffer entspricht genau einem Nibble, also 4 Bit. Damit lässt sich eine Binärzahl in Hex umwandeln, indem man sie von rechts in Vierergruppen zerlegt und jede Gruppe für sich als Hex-Ziffer notiert.
Binär nach Hex und zurück
Beispiel mit dem 8-Bit-Wert 1011 0101:
Binär: 1011 0101
↓ ↓
Hex: B 5
Das obere Nibble 1011 hat den Wert 11 (= B), das untere Nibble 0101 hat den Wert 5. Die Hex-Schreibweise lautet also B5. Aus jedem Byte werden so zwei Hex-Ziffern — kompakt und gut lesbar.
Umgekehrt geht es genauso schnell: Jede Hex-Ziffer wird in ihre vier Bit übersetzt und die Nibbles werden aneinandergehängt.
Hex nach Dezimal
Auch hier gilt das Stellenwertprinzip, nur mit der Basis 16:
B5 hex = B·16¹ + 5·16⁰
= 11·16 + 5·1
= 176 + 5
= 181 dezimal
Es ist kein Zufall, dass die 181 schon im Kapitel zuvor aufgetaucht ist: Binär 1011 0101, hex B5 und dezimal 181 sind dieselbe Zahl in drei Schreibweisen.
Dezimal nach Hex
Methodisch identisch zur Binärumwandlung, nur dass durch 16 dividiert wird:
181 : 16 = 11 Rest 5 (Stelle 0 = 5)
11 : 16 = 0 Rest 11 (Stelle 1 = B)
Reste von unten nach oben: B5.
Schreibweisen in der Praxis
Damit klar ist, dass eine Zahl als Hex gemeint ist, gibt es mehrere Schreibweisen. In der SPS- und Mikrocontroller-Welt sind verbreitet:
| Schreibweise | Beispiel |
|---|---|
| 0x-Präfix (C, C++, Arduino) | 0xB5 |
| $-Präfix (Assembler, ältere Systeme) | $B5 |
| h-Suffix (Siemens TIA, Step 7) | B5h |
| 16# (IEC 61131-3) | 16#B5 |
Welche Schreibweise du benutzt, hängt vom System ab, in dem du arbeitest. Wichtig ist nur: Ohne Kennzeichnung lässt sich „10″ nicht von „16#10″ unterscheiden — das eine wäre dezimal zehn, das andere dezimal sechzehn.
Tipp zur Bedienung: Für die Hex-Ziffern A bis F gibst du die zugehörigen Dezimalwerte ein — A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. Mit den Startwerten 11 und 5 berechnet der Rechner B5 hex = 181 dezimal.
Gelöstes Beispiel
Rechne die Hexzahl 2F um — einmal in Binär und einmal in Dezimal.
Gegeben: Hexzahl 2F
Gesucht: Binär- und Dezimaldarstellung
Lösungsweg:
- Nibble für Nibble in Binär:
Hex: 2 F
Wert: 2 15
Binär: 0010 1111
Ergebnis Binär: 0010 1111 - Stellenwerte hex:
2F hex = 2·16 + 15·1 = 32 + 15 = 47
Ergebnis: 2F hex = 0010 1111 binär = 47 dezimal
Übungen
Rechne 0xA3 in Dezimal um.
10·16 + 3 = 163
Rechne 200 dezimal in Hex um.
200 : 16 = 12 Rest 8 → C8 hex
Rechne die Binärzahl 1110 0011 in Hex um.
Nibbles: 1110 = E, 0011 = 3 → E3
Wie groß ist der größte Wert, der mit zwei Hex-Stellen vorzeichenlos darstellbar ist?
FF hex = 15·16 + 15 = 255 dezimal (entspricht einem 8-Bit-Byte)
Bei einer RGB-Farbe #1A2B3C: Welche Dezimalwerte haben die drei Farbkanäle?
Rot = 1A = 1·16 + 10 = 26, Grün = 2B = 2·16 + 11 = 43, Blau = 3C = 3·16 + 12 = 60
Welche Aussage über das Hexadezimalsystem ist falsch?
- a) Es hat die Basis 16
- b) Eine Hex-Stelle entspricht einem Bit
- c) Die Ziffern reichen von 0 bis F
- d) Es eignet sich zur kompakten Darstellung binärer Werte
Richtig: b)
Eine Hex-Stelle entspricht 4 Bit, also einem Nibble, nicht einem einzelnen Bit. Genau diese 4-zu-1-Verbindung macht Hex für die Darstellung binärer Daten so praktisch.
Welcher Dezimalwert entspricht 0xC4?
- a) 124
- b) 184
- c) 196
- d) 244
Richtig: c)
C = 12 in dezimal. Damit ist 0xC4 = 12·16 + 4 = 192 + 4 = 196.
Die Binärzahl 1101 0110 lautet in Hex-Schreibweise:
- a) D6
- b) 6D
- c) B6
- d) DA
Richtig: a)
Oberes Nibble 1101 = 13 = D, unteres Nibble 0110 = 6. Die Hex-Zahl heißt damit D6.
Eine SPS-Konstante ist als 16#0FFF angegeben. Welche Bitbreite reicht dafür mindestens aus?
- a) 8 Bit
- b) 10 Bit
- c) 14 Bit
- d) 12 Bit
Richtig: d)
0FFF hex entspricht binär 0000 1111 1111 1111. Die gesetzten Bits gehen bis Bit-Position 11, das sind 12 Bit. Mit 12 Bit lassen sich Werte 0 bis 4 095 darstellen — und FFF = 4 095. Acht oder zehn Bit reichen nicht, 14 reichen zwar, sind aber nicht das Minimum.
4. BCD-Code
BCD steht für Binary Coded Decimal und ist die direkte Übersetzung des Dezimalsystems in 4-Bit-Gruppen. Die Regel ist denkbar einfach: Jede einzelne Dezimalziffer wird für sich genommen in ein Nibble übersetzt. Aus 9 wird 1001, aus 4 wird 0100 — fertig.
Der Unterschied zum reinen Binär liegt darin, dass BCD nicht den Gesamtwert einer Zahl codiert, sondern jede Ziffer separat. Ein Beispiel macht das deutlich.
Die Dezimalzahl 25:
Reines Binär: 25 = 0001 1001
BCD: 25 = 0010 0101
↑ ↑
Ziffer 2 Ziffer 5
Beide Schreibweisen verwenden 8 Bit, aber das Ergebnis ist ein anderes. Das reine Binär ist die mathematisch kompakte Form (Wert 16 + 8 + 1 = 25), das BCD trennt sauber nach Ziffern (2 und 5).
Verbotene Codes
Eine BCD-Stelle kann nur die Werte 0 bis 9 annehmen. Die Bitkombinationen 1010, 1011, 1100, 1101, 1110 und 1111 (also dezimal 10 bis 15) sind im BCD-System Pseudotetraden und gelten als ungültig. Eine korrekt arbeitende BCD-Auswertung muss diese Codes erkennen und als Fehler behandeln.
Vor- und Nachteile
BCD hat eine ganz konkrete Stärke: Die Umwandlung zwischen einer angezeigten Dezimalzahl und ihrer internen Darstellung ist trivial — Ziffer für Ziffer, ohne Umrechnung. Das macht BCD ideal überall dort, wo Dezimalziffern direkt sichtbar oder eingegeben werden.
Der Preis dafür ist ein höherer Speicherbedarf. Ein Byte (8 Bit) reicht in reinem Binär bis 255, in BCD nur bis 99. Außerdem lässt sich mit BCD-Zahlen nicht ohne Weiteres rechnen — bei einer normalen binären Addition entstehen leicht Pseudotetraden, die einen Korrekturschritt erfordern.
Gelöstes Beispiel
Codiere die Dezimalzahl 308 im BCD-Code.
Gegeben: Dezimalzahl 308
Gesucht: BCD-Darstellung
Lösungsweg:
- Ziffern einzeln nehmen:
3, 0, 8 - Jede Ziffer in 4 Bit übersetzen:
3 → 0011
0 → 0000
8 → 1000 - Nibbles aneinanderhängen:
0011 0000 1000
Ergebnis: 308 dezimal = 0011 0000 1000 BCD (12 Bit)
Übungen
Codiere 47 im BCD.
4 → 0100, 7 → 0111 → 0100 0111
Welche Dezimalzahl steht hinter dem BCD-Wert 1001 0010 0101?
1001 = 9, 0010 = 2, 0101 = 5 → 925
Vergleiche, wie viele Bit die Zahl 99 jeweils in reinem Binär und in BCD benötigt.
Binär: 99 = 0110 0011 → 7 Bit reichen (1100011). BCD: 1001 1001 → 8 Bit. BCD braucht hier 1 Bit mehr.
Welche der folgenden 4-Bit-Gruppen ist eine ungültige BCD-Ziffer: 0111, 1010, 1001, 0011?
1010 (dezimal 10) — gehört zu den Pseudotetraden 1010 bis 1111.
Eine 4-stellige BCD-Anzeige soll die größtmögliche Zahl anzeigen. Wie viele Bit braucht der Speicher dafür, und welche Zahl ist das?
4 Stellen · 4 Bit = 16 Bit. Größte Zahl: 9999, BCD-codiert 1001 1001 1001 1001.
Welche der folgenden Aussagen über BCD ist richtig?
- a) BCD codiert nicht jede Ziffer einzeln, sondern den Gesamtwert
- b) BCD ist platzsparender als reines Binär
- c) BCD braucht weniger Bit als reines Binär für dieselbe Zahl
- d) BCD codiert jede Dezimalziffer einzeln in 4 Bit
Richtig: d)
Genau das ist die Definition von Binary Coded Decimal — Ziffer für Ziffer in 4 Bit. Dadurch braucht BCD typischerweise mehr Bit als reines Binär, ist aber für Anzeigezwecke deutlich praktischer.
Welche der folgenden 4-Bit-Gruppen ist KEINE gültige BCD-Ziffer?
- a) 0100
- b) 1001
- c) 1110
- d) 0111
Richtig: c)
1110 hat den Wert 14 und gehört zu den Pseudotetraden (1010–1111). Eine BCD-Stelle darf nur Werte 0 bis 9 (also 0000 bis 1001) annehmen.
Die Dezimalzahl 56 ist als BCD-Code:
- a) 0101 0110
- b) 0110 0101
- c) 0011 1000
- d) 1110 0010
Richtig: a)
Ziffer 5 → 0101, Ziffer 6 → 0110, ergibt 0101 0110. Antwort c (0011 1000) wäre das reine Binär von 56 — daran erkennt man den Unterschied gut.
5. Rechnen mit Binärzahlen und negative Zahlen
Sobald die Darstellung sitzt, taucht die nächste Frage auf: Wie rechnet man eigentlich mit Binärzahlen? Und wie bringt man negative Werte in einer Welt unter, die nur Nullen und Einsen kennt?
Binäre Addition
Die Spielregeln der Addition sind im Binärsystem fast langweilig — es gibt nur vier Fälle:
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 0 = 1
- 1 + 1 = 10 (also 0 mit Übertrag 1)
Der Übertrag (oft Carry genannt) entsteht, wenn die Summe einer Stelle nicht mehr in ein Bit passt. Er wandert zur nächsthöheren Stelle und wird dort mit aufaddiert — genau wie der Zehnerübertrag im Dezimalsystem.
Beispiel: 0101 1010 + 0011 1100
1 1 1 1 1 ← Überträge
0 1 0 1 1 0 1 0
+ 0 0 1 1 1 1 0 0
─────────────────
1 0 0 1 0 1 1 0
Probe in Dezimal: 90 + 60 = 150 — passt.
Überlauf
Bei begrenzter Bitbreite kann eine Addition über den Wertebereich hinauslaufen. Wenn man 8 Bit hat (Bereich 0–255), wird aus 200 + 100 nicht 300, sondern (300 mod 256) = 44. Das nennt sich Überlauf (Overflow). In SPS und Mikrocontrollern setzt ein solches Ereignis meist ein dediziertes Statusbit, damit das Programm reagieren kann.
Negative Zahlen mit dem Zweierkomplement
Das Zweierkomplement ist die Standardmethode, negative Zahlen binär darzustellen. Die Idee dahinter: Statt ein eigenes „Vorzeichenbit“ wie ein Schalter zu behandeln, wird der höchsten Stelle ein negativer Stellenwert gegeben.
Bei einer 8-Bit-Zahl im Zweierkomplement bedeutet das:
Stellenwerte: -128 64 32 16 8 4 2 1
↑
negativer Stellenwert (Vorzeichenbit)
Das oberste Bit (MSB für Most Significant Bit, hier Bit 7) heißt deshalb auch Vorzeichenbit. Ist es 0, ist die Zahl positiv oder null. Ist es 1, ist die Zahl negativ. Das niederwertigste Bit ganz rechts heißt entsprechend LSB (Least Significant Bit).
Den Wert einer signed-Binärzahl liest man genauso ab wie bisher — nur dass beim obersten Bit der Stellenwert mit Minuszeichen gewichtet wird.
Beispiel für 1111 1011:
-128·1 + 64·1 + 32·1 + 16·1 + 8·0 + 4·0 + 2·1 + 1·1
= -128 + 64 + 32 + 16 + 0 + 0 + 2 + 1
= -5
Zweierkomplement bilden
Um den negativen Wert einer Zahl zu bekommen, gibt es ein simples Rezept:
- Alle Bits invertieren (Einerkomplement)
- Eins addieren
Beispiel: −5 aus +5 herstellen.
+5 = 0000 0101
invertieren → 1111 1010 (Einerkomplement)
+ 1 = 1111 1011
Das ist genau die Bitfolge, die wir oben als −5 abgelesen haben.
Wertebereiche signed vs. unsigned
Mit dem Zweierkomplement teilt sich der Wertebereich einer Bitbreite auf:
| Bitbreite | unsigned | signed (Zweierkomplement) |
|---|---|---|
| 8 Bit | 0 … 255 | −128 … +127 |
| 16 Bit | 0 … 65 535 | −32 768 … +32 767 |
| 32 Bit | 0 … 4 294 967 295 | −2 147 483 648 … +2 147 483 647 |
Dieselbe Hardware kann beide Sichtweisen liefern — der Unterschied liegt darin, wie das Programm die Bits interpretiert. SPS-Datentypen wie INT (16 Bit signed) oder DINT (32 Bit signed) arbeiten standardmäßig im Zweierkomplement, der Datentyp WORD (16 Bit unsigned) sieht dieselben Bits als positive Zahl.
Subtraktion durch Addition
Ein praktischer Nebeneffekt des Zweierkomplements: Eine Subtraktion lässt sich als Addition des Zweierkomplements ausführen. Statt 14 − 5 rechnet die Maschine 14 + (−5). Das spart Hardware-Aufwand, weil dieselbe Addier-Schaltung beides erledigt.
Probier es aus: Mit allen Bits auf 1 ergibt sich −1, mit nur Bit 7 auf 1 ergibt sich −128 (die kleinstmögliche Zahl), mit Bit 7 auf 0 und allen anderen auf 1 ergibt sich +127 (die größte).
Gelöstes Beispiel
Berechne die Summe der Binärzahlen 1011 + 0110 (jeweils 4 Bit) schriftlich.
Gegeben: Zahl A = 1011 (binär, entspricht 11 dezimal), Zahl B = 0110 (binär, entspricht 6 dezimal)
Gesucht: Summe in Binär- und Dezimaldarstellung
Lösungsweg:
- Stellen einzeln addieren mit Überträgen:
Bit: 3 2 1 0
A: 1 0 1 1
B: 0 1 1 0
Übertrag: 1 1 1 0
Summe: 1 0 0 0 1 - Ergebnis ablesen:
Summe = 1 0001 (5 Bit, weil ein Übertrag über die höchste Stelle hinaus entstanden ist) - Dezimal-Probe:
1 0001 binär = 16 + 1 = 17 dezimal, und 11 + 6 = 17 ✓
Ergebnis: 1011 + 0110 = 10001 binär = 17 dezimal
Übungen
Addiere 0010 1100 + 0001 1011 (8 Bit) und gib die Summe in Binär und Dezimal an.
44 + 27 = 71. Binär 0100 0111.
Bilde das Zweierkomplement von +12 (8 Bit) und gib die Bitfolge an.
+12 = 0000 1100. Invertieren: 1111 0011. +1: 1111 0100. Das ist −12.
Welche Dezimalzahl steht hinter der Signed-Binärzahl 1100 1000 (8 Bit, Zweierkomplement)?
−128 + 64 + 8 = −56.
Berechne 25 − 10 im Binärsystem (8 Bit) über die Methode A + Zweierkomplement(B).
10 = 0000 1010 → Zweierkomplement = 1111 0110. 0001 1001 + 1111 0110 = (1)0000 1111. Der Übertrag aus Bit 7 wird bei 8-Bit-Signed-Operationen ignoriert. Ergebnis: 0000 1111 = 15 dezimal. Probe: 25 − 10 = 15 ✓
Welcher Wertebereich gilt für einen vorzeichenbehafteten 16-Bit-Wert?
−32 768 bis +32 767 (das entspricht −2¹⁵ bis +2¹⁵ − 1).
Bei der binären Addition 1 + 1 ergibt sich:
- a) 1, kein Übertrag
- b) 0 mit Übertrag 1
- c) 2, kein Übertrag
- d) 11, kein Übertrag
Richtig: b)
In einer einzelnen Bit-Stelle gibt es nur Werte 0 oder 1. 1 + 1 = 2 passt nicht ins Bit — die Stelle wird 0, der Wert 2 wandert als Übertrag in die nächsthöhere Stelle.
Welcher Dezimalwert entspricht der Signed-8-Bit-Zahl 1000 0001 (Zweierkomplement)?
- a) −1
- b) +129
- c) −127
- d) +127
Richtig: c)
−128 (von Bit 7) + 1 (von Bit 0) = −127. Antwort a wäre die naive Lesart „Vorzeichenbit setzen und Wert übernehmen“ — diese Logik wendet das Zweierkomplement gerade nicht an. Antwort b wäre die unsigned-Lesart (1000 0001 = 128 + 1 = 129).
Welcher Wertebereich gilt für eine vorzeichenlose 12-Bit-Zahl?
- a) 0 … 2 047
- b) −2 047 … +2 048
- c) 0 … 8 191
- d) 0 … 4 095
Richtig: d)
2¹² = 4 096 Werte, davon 0 bis 4 095. Antwort a wäre nur 11 Bit, c wäre 13 Bit. Antwort b wäre signed und passt vom Bereich nicht zu 12 Bit.
Eine 8-Bit-Variable hält den Wert 250 (unsigned). Es werden 10 dazu addiert. Was ist das Ergebnis im 8-Bit-Speicher?
- a) 4 (Überlauf, 250+10 = 260, 260 mod 256 = 4)
- b) 260
- c) Die Variable bleibt 250
- d) Die Variable wird auf 255 begrenzt
Richtig: a)
250 + 10 = 260 sprengt den Wertebereich 0…255 eines 8-Bit-Unsigned. Es bleibt der Rest modulo 256, also 4. Ein eventuell vorhandenes Carry-Statusbit signalisiert den Überlauf, der eigentliche Speicherinhalt zeigt aber 4. Eine automatische Begrenzung auf 255 (Sättigung) gibt es nur bei speziellen Datentypen.
Abschlusstest
Aufgabe 1: Wandle die Dezimalzahl 167 in eine 8-Bit-Binärzahl und in eine Hex-Zahl um.
Gegeben: 167 dezimal
Gesucht: Binär- und Hex-Darstellung
Lösungsweg:
- 167 : 16 = 10 Rest 7 → niedere Stelle = 7
- 10 : 16 = 0 Rest 10 → höhere Stelle = A
Also Hex = A7. - A7 hex = 1010 0111 binär.
Ergebnis: 167 = 1010 0111 binär = A7 hex
Aufgabe 2: Wandle die Hex-Zahl 0xD9 in Dezimal und in Binär um.
Gegeben: 0xD9
Gesucht: Dezimal- und Binärdarstellung
Lösungsweg:
- D = 13, also D9 = 13·16 + 9 = 208 + 9 = 217.
- Nibbles: D = 1101, 9 = 1001 → 1101 1001.
Ergebnis: 0xD9 = 217 dezimal = 1101 1001 binär
Aufgabe 3: Codiere 472 im BCD-Code.
Gegeben: 472 dezimal
Gesucht: BCD-Code
Lösungsweg:
- 4 → 0100
- 7 → 0111
- 2 → 0010
Ergebnis: 0100 0111 0010 BCD (12 Bit)
Aufgabe 4: Addiere die 8-Bit-Binärzahlen 0110 1101 + 0001 0110 schriftlich und gib das Ergebnis in Dezimal an.
Gegeben: 0110 1101 + 0001 0110
Gesucht: Summe (binär und dezimal)
Lösungsweg:
- 0110 1101 = 109
- 0001 0110 = 22
- Summe = 131
- Binäre Addition: 1000 0011
Ergebnis: 0110 1101 + 0001 0110 = 1000 0011 binär = 131 dezimal
Aufgabe 5: Bilde das Zweierkomplement der Zahl +37 (8 Bit) und gib das Ergebnis sowohl in Binär als auch in Hex an.
Gegeben: +37 dezimal
Gesucht: −37 im Zweierkomplement, Binär und Hex
Lösungsweg:
- +37 = 0010 0101
- invertieren: 1101 1010
- +1: 1101 1011
- 1101 1011 in Hex: DB
Ergebnis: −37 = 1101 1011 binär = DB hex
Aufgabe 6: Eine MAC-Adresse beginnt mit den Bytes 8C-1F-64. Wie sehen diese drei Bytes in Binär aus?
Gegeben: 8C, 1F, 64 (jeweils 1 Byte)
Gesucht: Binärdarstellung jedes Bytes
Lösungsweg:
- 8C → 8 = 1000, C = 12 = 1100 → 1000 1100
- 1F → 1 = 0001, F = 15 = 1111 → 0001 1111
- 64 → 6 = 0110, 4 = 0100 → 0110 0100
Ergebnis: 1000 1100 — 0001 1111 — 0110 0100
Eine 16-Bit-Variable wird als signed INT verwendet. Welche Aussage ist korrekt?
- a) Sie kann Werte 0 bis 65 535 abbilden
- b) Sie kann Werte −32 768 bis +32 768 abbilden
- c) Sie kann Werte −32 768 bis +32 767 abbilden
- d) Sie kann Werte −65 535 bis +65 535 abbilden
Richtig: c)
Bei n Bit signed reicht der Bereich von −2ⁿ⁻¹ bis +2ⁿ⁻¹ − 1, also −32 768 bis +32 767. Antwort b ist um eins zu groß im positivien Bereich, weil die Null mitgezählt wird und damit eine positive Stelle „kostet“.
Welcher der folgenden BCD-Werte ist ungültig?
- a) 0001 0010 0011
- b) 1011 0010 0100
- c) 1001 1000 0111
- d) 0101 0000 0001
Richtig: b)
Das erste Nibble 1011 in Antwort b ist eine Pseudotetrade (= 11 dezimal). Eine BCD-Ziffer darf nur 0000 bis 1001 sein. Die anderen Optionen enthalten nur gültige Nibbles.
Eine SPS hat 32 digitale Eingänge, die als zusammenhängendes Doppelwort gelesen werden. Welche Hex-Konstante setzt alle Eingänge der unteren 8 Bit, lässt aber alle anderen unangetastet (Bitmuster zum Maskieren)?
- a) 0x000000FF
- b) 0x0000FF00
- c) 0xFFFFFFFF
- d) 0xFF000000
Richtig: a)
Die unteren 8 Bit entsprechen FF, alles andere ist 0. Antwort b wäre die Bits 8–15, c alle 32 Bit, d die obersten 8 Bit eines 32-Bit-Werts.
Du liest aus dem SPS-Speicher den 8-Bit-Wert 0xAE. Welche Aussage trifft zu?
- a) Im BCD-Code entspricht 0xAE der Dezimalzahl 17
- b) Im Binär entspricht der Wert 1010 0111
- c) Der Wert hat genau 4 gesetzte Bits
- d) Im Binär entspricht der Wert 1010 1110, und im BCD wäre er ungültig
Richtig: d)
A = 1010, E = 1110, also 0xAE = 1010 1110. Das obere Nibble A (= 10) ist eine Pseudotetrade — als BCD nicht erlaubt. Antwort b vertauscht die Nibbles, c ist falsch (es sind 5 gesetzte Bits an den Positionen 7, 5, 3, 2, 1).
Welche Binärzahl entspricht 0x3F?
- a) 0011 0011
- b) 0011 1111
- c) 0011 1110
- d) 0110 1111
Richtig: b)
3 = 0011, F = 1111 → 0011 1111. Das ist auch der Wert 63 dezimal.
Eine Variable im Zweierkomplement enthält das Bitmuster 1010 0000 (8 Bit signed). Welcher Dezimalwert ist das?
- a) +160
- b) −32
- c) −96
- d) −160
Richtig: c)
−128·1 + 64·0 + 32·1 + 16·0 + … = −128 + 32 = −96.
Welche Aussage über das Verhältnis Binär ↔ Hex ist korrekt?
- a) Eine Hex-Stelle entspricht 8 Bit
- b) Eine Hex-Stelle entspricht 2 Bit
- c) Eine Hex-Stelle entspricht 16 Bit
- d) Eine Hex-Stelle entspricht 4 Bit
Richtig: d)
4 Bit ergeben 16 Kombinationen — genau die Ziffernzahl des Hex-Systems. Diese 4-zu-1-Beziehung ist der praktische Vorteil von Hex.
Eine 4-stellige BCD-Anzeige zeigt den Wert 1234. Wie viele Bit braucht die Anzeige zur Übertragung des Wertes intern?
- a) 16 Bit
- b) 8 Bit
- c) 12 Bit
- d) 32 Bit
Richtig: a)
4 Stellen · 4 Bit = 16 Bit. Mit 12 Bit hätte man nur drei Stellen, mit 8 Bit nur zwei.
Welche Aussage über Pseudotetraden ist richtig?
- a) Sie sind im BCD-Code besonders kompakte Codierungen
- b) Sie kommen nur im Hexadezimalsystem vor
- c) Sie sind 4-Bit-Werte zwischen 1010 und 1111 und im BCD ungültig
- d) Sie entstehen bei jeder binären Addition
Richtig: c)
Pseudotetraden sind die sechs 4-Bit-Werte 10 bis 15, die im BCD-Code nicht erlaubt sind, weil eine Dezimalziffer nur 0 bis 9 sein darf.
Beim Vergleich der Speicherbedarfe gilt für eine Zahl im Wertebereich 0 bis 999:
- a) Reines Binär und BCD brauchen gleich viel Bit
- b) Reines Binär ist kompakter als BCD
- c) BCD ist immer kompakter als reines Binär
- d) Hex ist die kompakteste Form mit weniger Bit als Binär
Richtig: b)
999 passt in 10 Bit reinem Binär (2¹⁰ = 1 024). BCD braucht für drei Ziffern 12 Bit. Reines Binär ist also bei diesem Bereich um 2 Bit sparsamer. Hex ist nur eine Schreibweise für Binär und hat denselben Speicherbedarf, nicht weniger.
Glossar
- Basis
- Anzahl unterschiedlicher Ziffern eines Zahlensystems. Dezimal hat Basis 10, Binär 2, Hex 16.
- BCD-Code
- Binary Coded Decimal: Codierung, bei der jede Dezimalziffer für sich in 4 Bit dargestellt wird.
- Binärsystem
- Stellenwertsystem mit der Basis 2, kennt nur die Ziffern 0 und 1.
- Bit
- kleinste digitale Informationseinheit, kann zwei Zustände annehmen (0 oder 1).
- Byte
- Gruppe aus 8 Bit, typische Verarbeitungsbreite in Steuerungen.
- Hexadezimalsystem
- Stellenwertsystem mit der Basis 16, Ziffern 0–9 und A–F. Eine Hex-Stelle entspricht einem Nibble.
- LSB
- Least Significant Bit, die niederwertigste Bit-Stelle einer Binärzahl (Stellenwert 2⁰).
- MSB
- Most Significant Bit, die höchstwertige Bit-Stelle einer Binärzahl. Im Zweierkomplement gleichzeitig das Vorzeichenbit.
- Nibble
- Gruppe aus 4 Bit, entspricht genau einer Hex-Ziffer oder einer BCD-Stelle.
- Pseudotetrade
- 4-Bit-Wert zwischen 1010 und 1111, im BCD-Code ungültig, weil außerhalb der Dezimalziffern 0–9.
- Stellenwertprinzip
- Aufbauregel, bei der jede Position einer Zahl eine Potenz der Basis als Wert hat.
- Übertrag
- Wert, der bei einer Addition über die Bit-Stelle hinausgeht und zur nächsthöheren Stelle wandert; auch Carry genannt.
- Überlauf
- Zustand, wenn ein Rechenergebnis den Wertebereich der vorhandenen Bitbreite verlässt.
- Vorzeichenbit
- höchstes Bit einer signed-Zahl, das im Zweierkomplement mit negativem Stellenwert gewichtet wird.
- Zweierkomplement
- Standardverfahren zur Darstellung negativer Binärzahlen: Bits invertieren und 1 addieren.
