Frank (Diskussion | Beiträge) K (Cray-Code wurde nach Graycode verschoben) |
Frank (Diskussion | Beiträge) K (→Eigenschaften) |
||
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Der ''' | + | Der '''Gray-Code''' ist ein Binärcode. Ein ''n''-stelliger Gray-Code ordnet jeder Zahl von 0...2<sup>''n''</sup><tt>-</tt>1 einen anderen Wert zu. |
=Eigenschaften= | =Eigenschaften= | ||
− | Die Besonderheit des | + | Die Besonderheit des Gray-Codes besteht darin, daß benachbarte Werte sich in genau einem Bit unterscheiden; das gilt auch für den Übergang zwischen 2<sup>''n''</sup><tt>-</tt>1 und 0. |
− | Rotiert man also die den Zahlen zugeordneten Codes – wobei man sich 0 und 2<sup>''n''</sup><tt>-</tt>1 als Nachbarn denkt – erhält man wieder einen | + | Rotiert man also die den Zahlen zugeordneten Codes – wobei man sich 0 und 2<sup>''n''</sup><tt>-</tt>1 als Nachbarn denkt – erhält man wieder einen Gray-Code. |
+ | |||
+ | Die Wertigkeit einer 1 an der Position ''k'' im Gray-Code Zahlensystem ist 2<sup>''k''+1</sup><tt>-</tt>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<tt>-</tt>3+1 = 7<tt>-</tt>(3<tt>-</tt>1) = 5 | ||
+ | * 101 Gray = 7<tt>-</tt>1 = 6 | ||
+ | * 1111 Gray = 15<tt>-</tt>7+3<tt>-</tt>1 = 15<tt>-</tt>(7<tt>-</tt>(3<tt>-</tt>1)) = 10 | ||
+ | |||
+ | :{| {{Blauetabelle_Felder_zentriert}} | ||
+ | |- {{Hintergrund1}} | ||
+ | ! 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= | =Anwendung= | ||
− | Eine Anwendung finden | + | Eine Anwendung finden Gray-Codes in Inkrementgebern. Würde ein Inkrementgeber eine herkömmliche Binärzahl als Position liefern, also etwa <tt>101</tt> für 5 und <tt>110</tt> 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 <tt>100</tt> (4) oder <tt>111</tt> (7) auftreten. Der Gray-Code hat dieses Problem nicht, da sich benachbarte Werte nur ein einem Bit unterscheiden. |
=Beispiele= | =Beispiele= | ||
− | ;Ein 2-stelliger | + | 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: | ||
:{|{{Blauetabelle}} | :{|{{Blauetabelle}} | ||
|- {{Hintergrund1}} | |- {{Hintergrund1}} | ||
Zeile 34: | Zeile 74: | ||
|} | |} | ||
− | ;Ein 4-stelliger | + | ;Ein 4-stelliger Gray-Code: |
:{|{{Blauetabelle}} | :{|{{Blauetabelle}} | ||
|- {{Hintergrund1}} | |- {{Hintergrund1}} | ||
Zeile 130: | Zeile 170: | ||
---- | ---- | ||
--[[Benutzer:SprinterSB|SprinterSB]] 14:46, 23. Feb 2006 (CET) | --[[Benutzer:SprinterSB|SprinterSB]] 14:46, 23. Feb 2006 (CET) | ||
+ | |||
+ | =Siehe auch= | ||
+ | * [[Sensorarten#Incremental-Geber|Incremental-Geber]] | ||
[[Kategorie:Grundlagen]] | [[Kategorie:Grundlagen]] | ||
[[Kategorie:Kommunikation]] | [[Kategorie:Kommunikation]] |
Aktuelle Version vom 28. Februar 2006, 14:01 Uhr
Der Gray-Code ist ein Binärcode. Ein n-stelliger Gray-Code ordnet jeder Zahl von 0...2n-1 einen anderen Wert zu.
Inhaltsverzeichnis
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)