NexTutor
Wielkie odkrycie 1947 — Gray

Kod Graya

Rozszerzenie tematu systemu binarnego i systemów liczbowych. Kod Graya to takie uporządkowanie liczb binarnych, że każde dwie kolejne różnią się dokładnie jednym bitem (wzór G(k)=k XOR (k>>1)). Dzięki temu unika się błędów w enkoderach i przełącznikach, gdzie jednoczesna zmiana wielu bitów mogłaby dać błędne stany pośrednie. Opracował go Frank Gray (patent 1947 r.).

Matematyka · Teoria liczb · Kod Graya (1947)
Liczba bitów nn (daje 2n2^n kolejnych wartości)3 bity
W kodzie Graya sąsiednie wartości różnią się o…
liczba bitów n
3
wartości 2ⁿ
8
Gray: zmiana / krok
1 bit
binarny: max / krok
3 bity

Co to jest kod Graya?

Kod Graya (zwany też refleksyjnym kodem binarnym) to sprytne uporządkowanie liczb binarnych, w którym każde dwie sąsiednie wartości różnią się dokładnie jednym bitem. Opracował go fizyk Frank Gray z Bell Labs — patent zgłoszono w 1947 r., a przyznano w 1953 r.

Po co, skoro mamy zwykły kod binarny?

W zwykłym kodzie binarnym przejście np. z 01110111 na 10001000 wymaga jednoczesnej zmiany czterech bitów. Gdyby zmieniły się one nie idealnie równocześnie (co zdarza się w urządzeniach mechanicznych), pojawiłyby się chwilowe, błędne wartości pośrednie. Kod Graya eliminuje ten problem — zawsze zmienia się tylko jeden bit, więc żaden fałszywy stan pośredni nie powstaje.

Jak się go generuje?

Elegancko, jednym wzorem — kk XOR z kk przesuniętą o jeden bit w prawo:

G(k)=k(k1)G(k) = k \oplus (k \gg 1)

gdzie \oplus to bitowe XOR, a 1\gg 1 to przesunięcie bitowe w prawo o jedną pozycję. Dla n=3n = 3 daje to kolejno: 000,001,011,010,110,111,101,100000,\,001,\,011,\,010,\,110,\,111,\,101,\,100 — i faktycznie każde dwie sąsiednie różnią się jednym bitem.

Niezmiennik: odległość Hamminga = 1

Odległość Hamminga liczy, na ilu pozycjach dwa ciągi bitów się różnią. Dla kolejnych wartości kodu Graya wynosi ona zawsze dokładnie 11. To właśnie ta gwarancja czyni kod Graya odpornym na błędy odczytu.

Gdzie się go stosuje?

W enkoderach pozycji (czujnikach kąta obrotu — tarcza po prawej), przełącznikach, komunikacji cyfrowej i wszędzie tam, gdzie zależy nam na minimalizacji błędów przy zmianie stanu. Bez kodu Graya obracający się enkoder mógłby na moment zameldować zupełnie błędną pozycję.

Po co Ci to na maturze:

Kod Graya to piękny przykład z pogranicza matematyki i informatyki: pokazuje, jak przemyślana matematyczna reprezentacja liczb rozwiązuje konkretny problem inżynierski. Operacje bitowe (XOR, przesunięcie) oraz systemy pozycyjne to stały element zadań z informatyki i matematyki dyskretnej.

Zapamiętaj: kod Graya porządkuje liczby tak, że sąsiednie różnią się jednym bitem (Hamming = 1). Generuje go wzór G(k)=k(k1)G(k) = k \oplus (k \gg 1), a stosuje się go w enkoderach i wszędzie, gdzie liczy się odporność na błędy.

Model poglądowy · Wirtualne laboratorium NexTutor

Najczęstsze pytania

O ile różnią się sąsiednie wartości w kodzie Graya?

Dokładnie o jeden bit (odległość Hamminga = 1).

Po co stosuje się kod Graya?

By uniknąć błędów w enkoderach pozycji i przełącznikach — jednoczesna zmiana wielu bitów mogłaby dać błędne stany pośrednie.

Jak generuje się kod Graya?

Wzorem G(k) = k XOR (k >> 1) — liczba XOR z samą sobą przesuniętą o jeden bit w prawo.