BCD und Gray-Code
Spezialisierte Binärkodierungen
Spezialkodierungen entdeckenNicht alle Binärdarstellungen sind reines Basis-2. BCD (Binary-Coded Decimal) und Gray-Code sind spezialisierte Kodierungen, die bestimmte Probleme in digitalen Systemen lösen – von der Anzeige von Zahlen auf Taschenrechnern bis zum fehlerfreien Ablesen von Drehgebern.
Binary-Coded Decimal (BCD)
Was ist BCD?
BCD stellt jede Dezimalziffer als 4-Bit-Binärzahl dar:
| Dezimal | BCD | Reines Binär |
|---|---|---|
| 0 | 0000 | 0000 |
| 5 | 0101 | 0101 |
| 9 | 1001 | 1001 |
| 10 | 0001 0000 | 1010 |
| 42 | 0100 0010 | 101010 |
| 99 | 1001 1001 | 1100011 |
Wesentlicher Unterschied
BCD verwendet 4 Bits pro Dezimalziffer; reines Binär ist kompakter, aber schwieriger anzuzeigen.
Warum BCD verwenden?
Einfache Dezimalanzeige
- Jede 4-Bit-Gruppe → eine Ziffer auf einer 7-Segment-Anzeige
- Keine aufwendige Binär-zu-Dezimal-Umwandlung erforderlich
- Taschenrechner und Messgeräte nutzen dies
Exakte Dezimalwerte
- Finanzberechnungen erfordern exakte Dezimalwerte
- 0,10 ist in BCD exakt, in binärer Gleitkommadarstellung nur näherungsweise
- Vermeidet Rundungsfehler bei Währungsberechnungen
Menschenlesbare Speicherung
- Zeitstempel werden häufig in BCD gespeichert
- Einfach in Hex-Dumps zu lesen
- BIOS-Echtzeituhren verwenden BCD
BCD-Arithmetik
Herausforderung bei der Addition
BCD-Addition erfordert eine Korrektur, wenn das Ergebnis > 9 ist:
- 0101 + 0100 = 1001 (5 + 4 = 9) ✓ Gültiges BCD
- 0111 + 0101 = 1100 (7 + 5 = 12) ✗ Ungültiges BCD
- Es muss 6 (0110) zur Korrektur addiert werden: 1100 + 0110 = 0001 0010 = 12
Warum 6 addieren?
BCD verwendet nur die Werte 0000-1001 (0-9). Die Werte 1010-1111 (10-15) sind ungültig. Die Addition von 6 erzeugt einen Übertrag in die nächste Stelle.
BCD-Varianten
Gepacktes BCD
- Zwei Ziffern pro Byte
- Effizientere Speicherung
- Beispiel: 42 = 0100 0010 in einem Byte
Ungepacktes BCD
- Eine Ziffer pro Byte (obere 4 Bits ungenutzt/null)
- Einfachere Verarbeitung
- Beispiel: 42 = 00000100 00000010 (zwei Bytes)
Exzess-3-BCD
- Zu jeder Ziffer wird vor der Kodierung 3 addiert
- Vereinfacht bestimmte Arithmetikschaltungen
- 0 = 0011, 9 = 1100
Gray-Code
Was ist Gray-Code?
Der Gray-Code ist eine Binärfolge, bei der sich zwischen aufeinanderfolgenden Werten nur ein Bit ändert:
| Dezimal | Binär | Gray-Code |
|---|---|---|
| 0 | 0000 | 0000 |
| 1 | 0001 | 0001 |
| 2 | 0010 | 0011 |
| 3 | 0011 | 0010 |
| 4 | 0100 | 0110 |
| 5 | 0101 | 0111 |
| 6 | 0110 | 0101 |
| 7 | 0111 | 0100 |
Warum der Gray-Code wichtig ist
Das Problem, das der Gray-Code löst
Im regulären Binärsystem ändern sich beim Übergang von 7 (0111) zu 8 (1000) vier Bits gleichzeitig.
- Wenn Sensoren nicht exakt gleichzeitig umschalten
- Treten kurzzeitige Fehlablesungen auf
- Es könnte kurzzeitig 0000, 0001, 0011, 0111 oder 1111 gelesen werden
Die Gray-Code-Lösung
- Es ändert sich immer nur ein Bit
- Keine mehrdeutigen Zwischenzustände
- Unverzichtbar für Positionsgeber
Anwendungen des Gray-Codes
Drehgeber
- Motorpositionserfassung
- Lautstärkeregler (digital)
- Robotik-Gelenkwinkel
- CNC-Maschinenpositionierung
Fehlerminimierung
- Analog-Digital-Wandlung
- Genetische Algorithmen (Crossover)
- Karnaugh-Diagramme (Logikminimierung)
Kommunikation
- Einige fehlerkorrigierende Codes
- Bestimmte Modulationsverfahren
Umwandlung von Binär in Gray-Code
Methode
- Das höchstwertige Bit (MSB) bleibt gleich
- Jedes Bit wird mit dem links danebenliegenden Bit per XOR verknüpft
Beispiel: 1011 (binär) in Gray-Code umwandeln
- MSB: 1 (beibehalten)
- 1 XOR 0 = 1
- 0 XOR 1 = 1
- 1 XOR 1 = 0
- Ergebnis: 1110 (Gray)
Formel
Gray[i] = Binary[i] XOR Binary[i+1]
Gray[MSB] = Binary[MSB]
Umwandlung von Gray-Code in Binär
Methode
- Das MSB bleibt gleich
- Jedes Gray-Bit wird mit dem vorherigen Binär-Bit per XOR verknüpft
Beispiel: 1110 (Gray) in Binär umwandeln
- MSB: 1 (beibehalten)
- 1 XOR 1 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- Ergebnis: 1011 (binär)
Fazit
BCD und Gray-Code sind spezialisierte Binärkodierungen, die bestimmte Probleme lösen. BCD vereinfacht die Dezimalanzeige und gewährleistet exakte Dezimalarithmetik – wichtig für Taschenrechner und Finanzsysteme. Der Gray-Code stellt sicher, dass sich zwischen aufeinanderfolgenden Werten nur ein Bit ändert – unverzichtbar für Positionsgeber und Fehlervermeidung. Auch wenn keines von beiden so verbreitet ist wie reines Binär, zeigt ihr Verständnis, wie unterschiedliche Zahlendarstellungen verschiedenen technischen Anforderungen dienen.