Lernen › Thema 6
Zahlensysteme: binär, oktal, hexadezimal und Codes
7 Min. Lesezeit · bitGateLab-Team
Eine digitale Schaltung versteht nur Nullen und Einsen, du musst aber Mengen, Vorzeichen, die Ziffern einer Anzeige und die Positionen eines Drehgebers darstellen. Hier lernst du, wie Stellenwertsysteme funktionieren, wie man zwischen dezimal, binär, oktal und hexadezimal umrechnet, wie man negative Zahlen im Zweierkomplement darstellt und wie man zwei in der Elektronik sehr verbreitete Codes verwendet: BCD und Gray.
Stellenwertsysteme
In einem Stellenwertsystem zur Basis b wird jede Ziffer je nach ihrer Stelle mit einer Potenz von b multipliziert, wobei rechts bei 0 zu zählen begonnen wird. Die Dezimalzahl 347 hat den Wert 3·102 + 4·101 + 7·100. Genauso ist es bei den anderen Basen:
- Binär (Basis 2): Ziffern 0 und 1, Bits genannt. Stellenwerte 1, 2, 4, 8, 16, 32, 64, 128...
- Oktal (Basis 8): Ziffern 0 bis 7. Jede Oktalziffer entspricht 3 Bits.
- Hexadezimal (Basis 16): Ziffern 0 bis 9 und A bis F (A = 10, B = 11, C = 12, D = 13, E = 14, F = 15). Jede Hexadezimalziffer entspricht 4 Bits.
Um Verwechslungen zu vermeiden, gibt man die Basis mit einem tiefgestellten Index an (10102, 178, 3F16) oder mit einem Präfix wie 0b oder 0x.
Umrechnung zwischen den Basen
Von einer beliebigen Basis nach dezimal
Multipliziere jede Ziffer mit ihrem Stellenwert und addiere. Zum Beispiel 2F316 = 2·256 + 15·16 + 3·1 = 512 + 240 + 3 = 755.
Von dezimal nach binär
Teile wiederholt durch 2 und notiere die Reste; die Binärzahl wird von unten nach oben gelesen (der letzte Rest ist das höchstwertige Bit). Eine andere Möglichkeit: immer wieder die größte Potenz von 2 abziehen, die noch hineinpasst.
Zwischen binär, oktal und hexadezimal
Weil 8 = 23 und 16 = 24 gilt, ist der Umweg über das Dezimalsystem nicht nötig: Fasse die Bits von rechts beginnend zu Gruppen von je 3 Bits (oktal) oder je 4 Bits (hexadezimal) zusammen und fülle links bei Bedarf mit Nullen auf.
Beispiel 1: 156 in binär, oktal und hexadezimal umwandeln.
- Fortgesetzte Division: 156/2 = 78 R 0; 78/2 = 39 R 0; 39/2 = 19 R 1; 19/2 = 9 R 1; 9/2 = 4 R 1; 4/2 = 2 R 0; 2/2 = 1 R 0; 1/2 = 0 R 1.
- Die Reste von unten nach oben gelesen: 156 = 100111002. Probe: 128 + 16 + 8 + 4 = 156.
- Oktal: 10 011 100 → 010 011 100 → 2 3 4. Ergebnis 2348 (2·64 + 3·8 + 4 = 156).
- Hexadezimal: 1001 1100 → 9 C. Ergebnis 9C16 (9·16 + 12 = 156).
Negative Zahlen: das Zweierkomplement
Ein Register mit n Bits hat keinen Platz für das Minuszeichen, also verwendet man eine Konvention. Praktisch alle Prozessoren nutzen das Zweierkomplement: Das höchstwertige Bit hat ein negatives Gewicht, −2n−1, und die übrigen behalten ihr positives Gewicht. Mit 8 Bits reicht der Wertebereich von −128 bis +127; mit 4 Bits von −8 bis +7.
So erhältst du das Negative einer Zahl:
- Schreibe die positive Zahl mit allen ihren Bits auf.
- Invertiere jedes Bit (das ist das Einerkomplement).
- Addiere 1.
Der Vorteil ist enorm: Addition und Subtraktion werden mit derselben Addiererschaltung ausgeführt, ohne besondere Logik für das Vorzeichen. Es gibt nur eine Null (00000000), und das höchstwertige Bit zeigt direkt an, ob die Zahl negativ ist.
Beispiel 2: −45 mit 8 Bits darstellen und 25 + (−12) berechnen.
- 45 = 00101101. Invertiert: 11010010. Nach Addition von 1: 11010011 = −45.
- Probe mit den Stellengewichten: −128 + 64 + 16 + 2 + 1 = −45.
- Nun 25 + (−12). 25 = 00011001; 12 = 00001100, invertiert 11110011, plus 1: 11110100 = −12.
- Summe: 00011001 + 11110100 = 1 00001101. Der Übertrag, der aus Bit 8 herausläuft, wird verworfen.
- Ergebnis: 00001101 = 13. Richtig.
BCD-Code
Im BCD-Code (binär codierte Dezimalzahl, Variante 8421) wird jede Dezimalziffer einzeln mit 4 Bits dargestellt. So schreibt man 395 als 0011 1001 0101. Das ist nicht dasselbe wie die Umwandlung von 395 ins Binärsystem (1100010112): BCD braucht mehr Bits, dafür geht jede Gruppe direkt an einen Decoder für eine 7-Segment-Anzeige, ganz ohne Divisionen. Die Codes 1010 bis 1111 sind in BCD ungültig; in einem Entwurf behandelt man diese Kombinationen meist als Don't-Care-Bedingungen in den Karnaugh-Diagrammen.
Gray-Code
Beim Gray-Code ändert sich von einem Wert zum nächsten nur ein einziges Bit. Im normalen Binärcode ändern sich beim Übergang von 7 (0111) auf 8 (1000) alle vier Bits gleichzeitig; liest ein Sensor genau während des Übergangs, kann er für einen Augenblick jeden beliebigen Zwischenwert sehen. Mit Gray tritt dieser Fehler nicht auf, deshalb verwendet man ihn in Drehgebern, in Zählern, deren Wert zwischen verschiedenen Taktdomänen übergeben wird, und in den Köpfen der Karnaugh-Diagramme.
- Binär nach Gray: Das höchstwertige Bit wird übernommen; jedes folgende Bit ist das XOR des entsprechenden Binärbits mit dem Binärbit links davon. Als Formel: g = b ⊕ (b um eine Stelle nach rechts verschoben).
- Gray nach binär: Das höchstwertige Bit wird übernommen; jedes folgende Binärbit ist das XOR des gerade ermittelten Binärbits mit dem Gray-Bit dieser Stelle.
| Dezimal | Binär | Gray | Dezimal | Binär | Gray |
|---|---|---|---|---|---|
| 0 | 0000 | 0000 | 8 | 1000 | 1100 |
| 1 | 0001 | 0001 | 9 | 1001 | 1101 |
| 2 | 0010 | 0011 | 10 | 1010 | 1111 |
| 3 | 0011 | 0010 | 11 | 1011 | 1110 |
| 4 | 0100 | 0110 | 12 | 1100 | 1010 |
| 5 | 0101 | 0111 | 13 | 1101 | 1011 |
| 6 | 0110 | 0101 | 14 | 1110 | 1001 |
| 7 | 0111 | 0100 | 15 | 1111 | 1000 |
Beispiel 3: binär 1011 nach Gray und zurück.
- Übernimm das erste Bit: 1.
- 1 ⊕ 0 = 1; 0 ⊕ 1 = 1; 1 ⊕ 1 = 0. Gray = 1110.
- Zurück: Übernimm das erste Bit, b3 = 1. Dann b2 = 1 ⊕ 1 = 0, b1 = 0 ⊕ 1 = 1, b0 = 1 ⊕ 0 = 1. Binär = 1011.
In der Tabelle steht bei der Dezimalzahl 11 der Gray-Code 1110: Es stimmt.
Häufige Fehler
- Die Bits für oktal oder hexadezimal von links beginnend zu gruppieren. Gruppiert wird immer vom niederwertigsten Bit aus.
- Das „+1“ des Zweierkomplements zu vergessen. Nur zu invertieren ergibt das Einerkomplement, das zwei Nullen und einen anderen Wertebereich hat.
- 11010011 als 211 zu deuten, wenn das Register vorzeichenbehaftet ist. Dasselbe Bitmuster bedeutet 211 ohne Vorzeichen oder −45 mit Vorzeichen: Es kommt auf die Konvention an.
- BCD mit binär zu verwechseln. Die 25 lautet in BCD 0010 0101, binär dagegen 11001.
- Bei der Umwandlung von Gray nach binär das XOR mit dem benachbarten Gray-Bit zu bilden statt mit dem gerade berechneten Binärbit.
Probiere es im Simulator aus
Mit ein paar Eingängen und Ausgängen kannst du diese Darstellungen „live“ sehen und die Umwandlung in den Gray-Code mit XOR-Gattern überprüfen.
- Platziere vier Eingänge als Bits b3 bis b0 und schließe eine Ziffernanzeige oder vier LEDs an, um den Wert zu sehen.
- Füge drei XOR-Gatter hinzu: g2 = b3 ⊕ b2, g1 = b2 ⊕ b1, g0 = b1 ⊕ b0, und verbinde b3 direkt mit g3.
- Schalte die Eingänge von 0000 bis 1111 durch und beobachte an den Ausgängen, dass sich von einem Wert zum nächsten nur ein einziges Gray-Bit ändert.
- Erzeuge die Wahrheitstabelle der Schaltung und vergleiche sie mit der Tabelle in diesem Artikel.
Übungen
- Wandle 110101102 in hexadezimal und in dezimal um.
Lösung
1101 0110 = D616 = 13·16 + 6 = 214.
- Wandle 200 in binär und in hexadezimal um.
Lösung
200 = 128 + 64 + 8 = 110010002 = C816.
- Stelle −100 im Zweierkomplement mit 8 Bits dar.
Lösung
100 = 01100100; invertiert 10011011; plus 1: 10011100. Probe: −128 + 16 + 8 + 4 = −100.
- Wandle die Dezimalzahl 6 in den 4-Bit-Gray-Code und den BCD-Wert 0111 0010 in dezimal um.
Lösung
6 = 0110; Gray: 0, 0 ⊕ 1 = 1, 1 ⊕ 1 = 0, 1 ⊕ 0 = 1 → 0101. Der BCD-Wert 0111 0010 ist 72.
Wie eine Schaltung diese Zahlen addiert und subtrahiert, erfährst du im nächsten Thema: Binäraddierer.