Gray Code

Herkunft / Verwendung: Der Gray Code ist nach Frank Gray, einem Forscher der Bell Laboratories benannt worden, der diesen 1947 für seine Zwecke entdeckte. Zuvor, 1941, wurde der Code aber schon von George Stibitz beschrieben. Im Jahre 1953 wurde Frank Gray ein Patent für "Pulse Code Communications" für eine Gray-kodierende Elektronenröhre erteilt.

Die Verwendung des Algorithmus geht aber auf noch früher zurück. Anfangs nur eine mathematische Knobelei, gab es bald nützliche Anwendungen. 1874 benutze der Wiener Telefon und Telegrafenhersteller Otto Schäfler den reflektierten Gray-Code für seine Produkte. Auch Jean-Maurice-Émile Baudot, nach dem der Baudot-Code benannt ist, verwendete der Gray Code auf dem Gebiet der elektrischen Telegrafie.

Durch seine Eigenschaft, dass sich beim Durchzählen jeweils nur ein einzelnes Bit zum Vorgänger / Nachfolger ändert, lassen sich Übertragungsfehler von sich stetig ändernden digitalen Signalen verringern, da sich unterschiedliche Laufzeiten nicht auswirken können. Dies führt zu einer robusten Übertragung über analoge Signalwege, wenn der binäre Datenstrom vorher Gray-kodiert wurde.

Spezifikation des Codes

Der Gray Code ist ein binärer Code, basiert also auf der duale Darstellung von Nullen und Einsen. Seine häufigsten Anwendung findet sich in einer 4-Bit-Gruppierung zur Darstellung einer dezimalen Ziffer als BCD (Binary Coded Decimal). Es ist aber auch eine Anwendung des Algorithmus mit mehr als 4 Bit möglich, die hier gezeigt wird.

Die Regel zur Berechnung der Folge der Standard Gray-Codes lässt sich nach einer einfachen Regel erzeugen: Beginnend mit der Null (alle Bits 0) ändert man jeweils das niederwertigste Bit (das ganz rechts), welches geändert werden kann, um damit eine neue binäre Abfolge zu erhalten.

Der Beginn der Gray-Folge in 4-Bit ist also: 0000 (dez. 0) 0001 (dez. 1) 0011 (dez. 2) 0010 (dez. 3) 0110 (dez. 4) 0111 (dez. 5) 0101 (dez. 6) 0100 (dez. 7) 1100 (dez. 8) 1101 (dez. 9) 1111 (dez. 10) 1110 (dez. 11) 1010 (dez. 12) 1011 (dez. 13) 1001 (dez. 14) 1000 (dez. 15) Dadurch stellt man sicher, dass sich Nachfolger (bzw. auch Vorgänger) in nur einem Bit unterscheiden, was für Robustheit bei der Übertragung über analoge Signalwege sorgt.

Für die Kodierung und Dekodierung ist zwingend nötig, dass es eine feste, gleich bleibende Bit-Gruppierung (Bitlänge) gibt, also zum Beispiel immer 4-Bit-Gruppen oder 8-Bit-Gruppen übertragen werden und auch die führenden Nullen mit übertragen werden.

Beispiel

Dezimale Zahlen:10 20 30 40 50 60
normal binär kodiert (7-Bit):0001010 0010100 0011110 0101000 0110010 0111100 1000110
kodiert im Gray-Code (7-Bit):0001111 0011110 0010001 0111100 0101011 0100010 1100101

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

Wenn Sie eine Folge von Gray-Codes dekodieren wollen, achten Sie bitte darauf, dass alle Elemente die selbe Bitlänge haben.



Quellen, Literaturverweise und weiterführende Links

Wikipedia-Artikel zum Gray Code