BCD Codes (Binary Coded Decimal)

Herkunft / Verwendung: Zahlen werden in Dokumenten häufig durch Dezimalziffern in ASCII-Code mit einem Byte (8 Bit) oder in Unicode mit sogar 2 Bytes (16 Bit) (oder sogar noch mehr) dargestellt. Für den Menschen ist das einfach zu lesen, weil er damit die gewohnten Ziffern von Null bis Neun lesen kann.

Für den Computer allerdings ist es ineffiziente Platzverschwendung. Der Computer ist auf duale Zähl- und Rechenweise (Null und Eins für "aus" und "an" bzw. "Bit nicht gesetzt" und "Bit gesetzt") ausgelegt und speichert Zahlen binär. Das wiederum ist für den Menschen schwer zu lesen und zu rechnen.

Sozusagen ein Mittelding, ein Kompromiss ist die Kodierung in BCD, was für 'Binary Coded Decimal' steht und bedeutet, dass jede Dezimalziffer für sich binär kodiert ist. Dazu benötigt man 4 Bits, die zusammen von 0 bis 15 zählen könnten (bzw. von von 00002 bis 11112), es aber nur bis Zehn (binär 1010) tun. Drei Bits würden nicht ausreichen, weil der Computer damit nur bis Acht (2 hoch 3 = 8) zählen könnte.

In der Digitaltechnik werden dezimale Eingabewerte (etwa von einem Vorwahlschalter mit 10 Stufen je Ziffer) pro Ziffer in 4 Elektronik-Bausteinen mit dem lustigen Namen "Flip Flop" als Ladungszustand gespeichert. Ein elektronischer Dekadenzähler zählt diese vier Flip Flops nur bis dezimal 9 (binär 1001) normal hoch. Beim zehnten Zählimpuls (binär 1010) erfolgt durch ein durch eine Verschaltung mit einem Und-Gatter (am Ausgang des zweiten und vierten Flip-Flops) ein Signalweitergabe an ein höherwertiges Flip-Flop-Quartett (für die Zehnerstelle) und gleichzeitig eine Rückstellung der unteren 4 Flip-Flops. So wird im Ergebnis auf die einzelnen Dezimalstellen (Einer, Zehner, Hunderter etc.) gezählt.

Der Vorteil dabei ist, dass jeweils ein Flip-Flop-Quartett für eine Dezimalziffer steht und sich das Zählen elektronisch einfach realisieren lässt. Auch die Ausgabe in dezimaler Form ist danach sehr viel einfacher, wenn schon nach Dezimalziffern gruppiert ist.

Außer der normalen Zählweise mit den Bitwertigkeiten 8-4-2-1 gibt es auch Verfahren, die zum Beispiel auf Erkennung von Übertragungsfehlern ausgelegt sind. Es gibt also mehrere BCD-Varianten.

Alternative Schreibweise der Bits

Außer der heute in der Informatik üblichen Schreibweise für binäre Codes mit Nullen und Einsen gibt es auch noch andere Symbole, die für 0 und 1 verwendet werden. Diese müssen gegebenenfalls vorher durch 0 und 1 ersetzt werden, damit die Dekodierung durch das Tool weiter unten funktioniert.
1: 1 oder L oder High oder wahr (w) oder true (t) 0: 0 oder O oder Low oder falsch (f) oder false (f)
Die Symbole L und O stammen aus der ursprünglichen Digitaltechnik. Als Eselsbrücke für "L" kann man sich "Licht an" denken.
High und low stehen für die Signalpegel, wie man sie z. B. auf einem Oszilloskop sehen kann. Bei "high" ist der Signalpegel "hoch", z. b. 5 Volt, bei "low" ist der Signalpegel "niedrig", meist Null Volt.
Wahr und falsch bzw. true und false kommen aus der Logik und kommen unter anderem bei der Verwendung von logischen Gattern in der Digitaltechnik vor.

Beschreibung der Codearten

CodeBeschreibung
8421, normal 8421 gibt die Wertigkeiten der Bits an. 8421 ist die normale Wertigkeitsverteilung, das rechte (lower) Bit hat die Wertigkeit 1, das 2. von rechts 2 usw. Die Ziffern werden wie folgt kodiert: 8421 8421 8421 8421 0001 1 0100 4 0111 7 0000 0 0010 2 0101 5 1000 8 0011 3 0110 6 1001 9 Beispiel für 7: 0111 = 4+2+1 = 7

7421 Wie der BCD 8421-Code nur mit den Wertigkeiten 7, 4, 2, 1.
5421 Wie der BCD 8421-Code nur mit den Wertigkeiten 5, 4, 2, 1.
(5311) Wie der BCD 8421-Code nur mit den Wertigkeiten 5, 3, 1, 1.
(84-2-1, Stibitz/Exzess-3) Wie der BCD 8421-Code nur mit den Wertigkeiten 8, 4, -2, -1. Durch die negativen Werte sind die Bits im Ergebnis mehr gleich gewichtet. D. h., es werden nicht wie bei 8421 die niederwertigeren Bits bevorzugt. Dieser BCD-Code wird auch Stibitz-Code oder Exzess-3-Code genannt.
(2421, Aiken) Wie der BCD 8421-Code nur mit den Wertigkeiten 2, 4, 2, 1. Durch das reduzierte höchwertige Bit ist die Verteilung der Bits im Ergebnis mehr gleich gewichtet. D. h., es werden nicht wie bei 8421 die niederwertigeren Bits bevorzugt. Der Code wird auch Aiken-Code (nach Howard Hathaway Aiken, dem Miterfinder des Mark I-Rechners) genannt und bis heute in Digitaluhren, Taschenrechnern und ähnlichen Geräten genutzt.
Gray, 4 bit Der Gray-Code ist ein stetiger Code nach dem Physiker Frank Gray benannt. Er ist prinzipiell auch mit mehr Bits möglich, doch ist eine Ziffern-Überführung nur mit 4 Bits sinnvoll.
(Libaw-Craig/Johnson) Der Libaw-Craig-Code (auch Johnson-Code genannt) ist eine spezielle 5-Bit-Darstellung einer Ziffer im Dezimalsystem. Es ist der Code, der für den Johnson-Zähler (auch Möbius-Zähler genannt) benutzt wird. Wie beim BCD-Code handelt es sich um einen numerischen Code, der jede Ziffer einer Dezimalzahl einzeln dualkodiert. Der Code ist stetig, d. h. beim hochzählen ändert sich jeweils nur 1 Bit zum Vorgänger.
Summencode Beim Summencode werden einfach die Anzahl der 9 Bits gesetzt (begonnen beim niederwertigsten Bit), die dem Wert entsprechen. Ein Anwendungsbeispiel ist etwa die Verwendung zur Ansteuerung der Beleuchtung eines elektronischen VU-Meters, etwa für eine Lichtorgel.
1 aus 10 (One Hot) Bei dieser auch One-Hot-Kodierung genannten Variante werden aus jede Ziffern 10 Bits, wobei jeweils nur 1 Bit gesetzt ist. Der 1-aus-n-Code findet z. B. in Tastenfeldern, Anzeigetafeln und anderen elektronischen Schaltungen Anwendung.
2 aus 5 (74210) Bei dieser Variante werden aus jeder Ziffer 5 Bits, obwohl 4 Bits ausreichend wären. Der Code ist so angelegt, dass sich aus der Redundanz die Möglichkeit ergibt, Übertragungsfehler zu erkennen. Der Code fand bei automatischen Briefsortierungsanlagen der Deutschen Bundespost Anwendung.
Biquinär (5043210) Bei dieser Codierung wird eine Ziffer in 7 Bits überführt, wobei es jeweils 5 Nuller und 2 Einser gibt. So lassen sich Übertragungsfehler aufdecken, falls einmal mehr oder weniger als 2 gesetzte Bits ankommen.
Biquinär (0501234, IBM 650) Diese auf IBM 650 Großrechnern benutzte Codierung hat ebenfalls Fehlerkorrektur-Potential, weil immer 2 Bits gesetzt sind.
Biquinär 1357x (Rand 409) Diese auf Remington Rand 409 Großrechnern benutzte Codierung hat eine Besonderheit: ein so genanntes Bi-Bit, dass gesetzt normalerweise die Wertigkeit 1 hat. Ist es aber allein gesetzt, besitzt es die Wertigkeit 9.

Beispiele

Zu kodierende Ziffern:1 2 3 4 5 6 7 8 9 0
Kodiert:siehe folgend
1 2 3 4 5 6 7 8 9 0 8421, normal 0001 0010 0011 0100 0101 0110 0111 1000 1001 0000 7421 0001 0010 0011 0100 0101 0110 1000 1001 1010 0000 5421 0001 0010 0011 0100 0101 0110 0111 1011 1100 0000 5311 0001 0010 0011 0100 0101 0110 0111 1011 1100 0000 84-2-1, St./Ex.-3 0111 0110 0101 0100 1011 1010 1001 1000 1111 0000 2421, Aiken 0001 0010 0011 0100 1011 1100 1101 1110 1111 0000 Gray, 4 bit 0001 0011 0010 0110 0111 0101 0100 1100 1101 0000 1 2 3 4 5 6 7 8 9 0 L.-Craig/Johnson 00001 00011 00111 01111 11111 11110 11100 11000 10000 00000 Biq. 1357x 10000 10001 01000 01001 00100 00101 00010 00011 00001 00000 2 aus 5 00011 00101 00110 01001 01010 01100 10001 10010 10100 11000 1 2 3 4 5 6 7 8 9 0 Biquinär 5043210 0100010 0100100 0101000 0110000 1000001 1000010 1000100 1001000 1010000 0100001 Biq. 0501234 1001000 1000100 1000010 1000001 0110000 0101000 0100100 0100010 0100001 1010000 1 2 3 4 5 6 7 8 9 0 Summencode 000000001 000000011 000000111 000001111 000011111 000111111 001111111 011111111 111111111 000000000 1 aus 10, One Hot 0000000010 0000000100 0000001000 0000010000 0000100000 0001000000 0010000000 0100000000 1000000000 0000000001

Code / Chiffre online dekodieren / entschlüsseln bzw. kodieren / verschlüsseln (DeCoder / Encoder / Solver-Tool)

Quellen, Literaturverweise und weiterführende Links

Pütz, Jean: Digitaltechnik – eine Einführung für Anfänger, VDI Verlag 1974 (ISBN 978-318-4004-040), S. 31, S. 253 ff., S. 286 ff.
BCD-Code bei Wikipedia
Aiken-Code bei Wikipedia
Gray-Code bei Wikipedia