> Gray | odbity | binarny <
// Kod Graya – binarny system liczbowy, w którym kolejne wartości różnią się tylko jednym bitem
Odległość jednostkowa
Między kolejnymi wartościami zmienia się tylko jeden bit.
Redukcja błędów
Zmniejsza błędy podczas konwersji analogowo–cyfrowej.
Własność cykliczna
Pierwsza i ostatnia wartość również różnią się tylko jednym bitem.
>> informacje techniczne
Jak działa kod Graya:
Kod Graya (odbity kod binarny) to system zapisu binarnego, w którym dwie kolejne wartości różnią się wyłącznie jednym bitem. Powstaje przez wykonanie operacji XOR pomiędzy każdym bitem a poprzednim. Ta cecha sprawia, że idealnie nadaje się do enkoderów położenia i redukcji błędów w systemach cyfrowych.
Przykłady kodu Graya:
Dziesiętny | Binarny | Kod Graya 0 | 0000 | 0000 1 | 0001 | 0001 2 | 0010 | 0011 3 | 0011 | 0010 4 | 0100 | 0110 5 | 0101 | 0111 6 | 0110 | 0101 7 | 0111 | 0100 Uwaga: między kolejnymi kodami Graya zmienia się tylko 1 bit
Dlaczego warto używać kodu Graya:
- ▸Enkodery obrotowe
- ▸Mapy Karnaugha
- ▸Korekcja błędów
- ▸Komunikacja cyfrowa
- ▸Czujniki położenia
>> najczęściej zadawane pytania
Czym jest kod Graya?
Kod Graya, nazywany także odbitym kodem binarnym, to system kodowania, w którym dwie kolejne wartości różnią się tylko jednym bitem. Szeroko stosuje się go w systemach cyfrowych, aby uniknąć błędnych odczytów podczas przejść pomiędzy stanami.
Jak przekonwertować zapis binarny na kod Graya?
Aby przekonwertować z binarnego na Gray: 1) zostaw najbardziej znaczący bit (MSB) bez zmian, 2) dla każdego kolejnego bitu wykonaj operację XOR z poprzednim bitem. Wzór: G[i] = B[i] XOR B[i-1]. Na przykład zapis binarny 1011 staje się kodem Graya 1110.
Dlaczego kod Graya jest lepszy dla enkoderów?
W zwykłym kodzie binarnym przy przejściu między wartościami może zmieniać się kilka bitów jednocześnie, co prowadzi do chwilowych, niepoprawnych stanów. Kod Graya gwarantuje zmianę tylko jednego bitu, dzięki czemu odczyty z enkoderów są mniej podatne na błędy.
Gdzie stosuje się kod Graya?
Kod Graya jest używany w enkoderach obrotowych, przy upraszczaniu funkcji logicznych za pomocą map Karnaugha, w korekcji błędów w komunikacji cyfrowej, w algorytmach genetycznych oraz w przetwornikach analogowo–cyfrowych.
// Krótka ściąga
| 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 |
// Przykłady kodu
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)
>> Więcej pytań
P: Czym jest kod Graya?
O: Kod Graya (zwierciadlany kod binarny) to zapis, w którym kolejne wartości różnią się dokładnie jednym bitem. Opatentował go Frank Gray w Bell Labs; jest cykliczny: ostatnia wartość też różni się od pierwszej jednym bitem.
P: Dlaczego używa się go w enkoderach obrotowych?
O: W zwykłym kodzie binarnym przy przejściu, np. 011 → 100, zmienia się kilka bitów naraz. Jeśli czujniki nie przełączą się idealnie jednocześnie, na chwilę pojawiają się błędne wartości. W kodzie Graya zmienia się jeden bit, więc błąd to najwyżej jedna pozycja.
P: Jak zamienić kod Graya na binarny?
O: Najstarszy bit pozostaje, każdy kolejny bit binarny to poprzedni bit binarny XOR bieżący bit Graya. Wzorem: b = g ^ (g >> 1) ^ (g >> 2) ^ …. Z binarnego na Graya: g = b ^ (b >> 1).