> Gray | reflektiert | binär <
// Gray-Code – binäres Zahlensystem, bei dem sich nur ein Bit zwischen aufeinanderfolgenden Werten ändert
Einheitsabstand
Zwischen zwei aufeinanderfolgenden Werten ändert sich nur ein einziges Bit.
Fehlerreduktion
Verringert Fehler bei der Analog-Digital-Wandlung.
Zyklische Eigenschaft
Erster und letzter Wert unterscheiden sich nur in einem Bit.
>> Technische Infos
Wie Gray-Code funktioniert:
Gray-Code (reflektierter Binärcode) ist ein binäres Zahlensystem, bei dem sich zwei aufeinanderfolgende Werte nur in einem Bit unterscheiden. Er entsteht, indem jedes Bit mit dem vorherigen Bit per XOR verknüpft wird. Diese Eigenschaft macht ihn ideal für Positionsencoder und zur Fehlerreduktion in digitalen Systemen.
Gray-Code-Beispiele:
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 Hinweis: Zwischen aufeinanderfolgenden Gray-Codes ändert sich nur ein Bit
Warum Gray-Code verwenden?:
- ▸Drehgeber (Rotary Encoder)
- ▸Karnaugh-Karten
- ▸Fehlerkorrektur
- ▸Digitale Kommunikation
- ▸Positionssensoren
>> Häufig gestellte Fragen
Was ist Gray-Code?
Gray-Code, auch reflektierter Binärcode genannt, ist ein binäres Zahlensystem, bei dem sich zwei aufeinanderfolgende Werte nur in einem Bit unterscheiden. Er wird häufig in digitalen Systemen eingesetzt, um fehlerhafte Zwischenzustände zu vermeiden.
Wie konvertiere ich Binär in Gray-Code?
Um Binär in Gray-Code umzuwandeln: 1) Das höchstwertige Bit (MSB) bleibt unverändert, 2) jedes weitere Bit wird mit dem vorherigen Bit per XOR verknüpft. Formel: G[i] = B[i] XOR B[i-1]. Zum Beispiel wird Binär 1011 zu Gray 1110.
Warum ist Gray-Code besser für Encoder?
Beim normalen Binärcode können sich mehrere Bits gleichzeitig ändern, was zu kurzzeitigen falschen Werten führt. Gray-Code stellt sicher, dass sich immer nur ein Bit ändert und reduziert so mehrdeutige Messwerte bei Drehgebern.
Wo wird Gray-Code eingesetzt?
Gray-Code wird in Drehgebern, bei der Vereinfachung von Karnaugh-Karten, in der Fehlerkorrektur digitaler Kommunikation, in genetischen Algorithmen sowie in Analog-Digital-Wandlern verwendet.
// Kurzreferenz
| Dec | Binary | Gray |
|---|---|---|
| 0 | 000 | 000 |
| 1 | 001 | 001 |
| 2 | 010 | 011 |
| 3 | 011 | 010 |
| 4 | 100 | 110 |
| 5 | 101 | 111 |
| 6 | 110 | 101 |
| 7 | 111 | 100 |
// Codebeispiele
Binary -> Gray g = b ^ (b >> 1)
Gray -> Binary b = g; for (m = g >> 1; m; m >>= 1) b ^= m;
Python def to_gray(n): return n ^ (n >> 1)
def from_gray(g):
n = 0
while g: n ^= g; g >>= 1
return n
n bits 2^n codes, successive codes differ by exactly 1 bit (also 2^n - 1 -> 0)
>> Weitere Fragen
F: Was ist der Gray-Code?
A: Der Gray-Code (reflektierter Binärcode) ist eine Zahlendarstellung, bei der sich aufeinanderfolgende Werte in genau einem Bit unterscheiden. Er wurde von Frank Gray bei Bell Labs patentiert und ist zyklisch: der letzte Wert unterscheidet sich vom ersten ebenfalls nur um ein Bit.
F: Warum wird er für Drehgeber verwendet?
A: Bei normalem Binärcode ändern sich beim Übergang, etwa von 011 zu 100, mehrere Bits gleichzeitig. Wenn die Sensoren nicht perfekt synchron schalten, entstehen kurz falsche Werte. Beim Gray-Code kippt nur ein Bit, der Fehler beträgt höchstens eine Position.
F: Wie wandle ich Gray-Code in Binär um?
A: Das höchste Bit bleibt gleich, jedes weitere Binärbit ist das vorige Binärbit XOR dem aktuellen Gray-Bit. Als Formel: b = g ^ (g >> 1) ^ (g >> 2) ^ …. Binär nach Gray ist einfach g = b ^ (b >> 1).