Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


Der Gray-Code ist ein Binärcode. Ein n-stelliger Gray-Code ordnet jeder Zahl von 0...2n-1 einen anderen Wert zu.

Eigenschaften

Die Besonderheit des Gray-Codes besteht darin, daß benachbarte Werte sich in genau einem Bit unterscheiden; das gilt auch für den Übergang zwischen 2n-1 und 0.

Rotiert man also die den Zahlen zugeordneten Codes – wobei man sich 0 und 2n-1 als Nachbarn denkt – erhält man wieder einen Gray-Code.

Die Wertigkeit einer 1 an der Position k im Gray-Code Zahlensystem ist 2k+1-1, also 1, 3, 7, 15, 31, ... Die Wertigkeiten der einzelnen Einsen werden im Gegensatz zum normalen Binärsystem nicht addiert, sondern von links beginnend abwechseln addiert und subtrahiert. Stellen, die 0 sind, werden dabei ausgelassen. Alternativ beginnt man von rechts, und subtrahiert vom Wert der Stelle den bisherigen Zwischenwert, und arbeitet sich nach links voran.

Beispiel:

  • 111 Gray = 7-3+1 = 7-(3-1) = 5
  • 101 Gray = 7-1 = 6
  • 1111 Gray = 15-7+3-1 = 15-(7-(3-1)) = 10
Wert Gray-Code
0 0 0 0 0
1 0 0 0 1
2 0 0 1 1
3 0 0 1 0
4 0 1 1 0
5 0 1 1 1
6 0 1 0 1
7 0 1 0 0

Anwendung

Eine Anwendung finden Gray-Codes in Inkrementgebern. Würde ein Inkrementgeber eine herkömmliche Binärzahl als Position liefern, also etwa 101 für 5 und 110 für 6, dann gäbe es ein Problem, wenn nicht alle Bits absolut gleichzeitig ihre Wertigkeit änderten. In dem Fall könnten "Phantomwerte" wie 100 (4) oder 111 (7) auftreten. Der Gray-Code hat dieses Problem nicht, da sich benachbarte Werte nur ein einem Bit unterscheiden.

Beispiele

Hier zwei Beispiele für Gray-Codes. Wie man sieht, unterscheiden sich zwei benachbarte Codes immer in genau einer Stelle. Für diese Eigenschaft ist unerheblich, wie ein schwarzes bzw. weisses Feld interpretiert wird und für welches Bit eine Zeile codiert.

Mit der Bewertung schwarz=0 und weiß=1 ergeben sich Gray-Codes, zu denen die obige Berechnungsvorschrift passt. Dabei entspricht die niederwertigste Stelle der jeweils unteren Zeile, etc.

Ein 2-stelliger Gray-Code
 0  1 2 3 0
         
         
Ein 4-stelliger Gray-Code
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0
                                 
                                 
                                 
                                 

--SprinterSB 14:46, 23. Feb 2006 (CET)

Siehe auch