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.).

Kod Graya
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
🎯 Wyzwanie: policz zmiany bitów
seria: 0

Dam Ci przejście k−1 → k. Policz, ile bitów przeskakuje ZWYKŁY kod binarny (Gray zmienia zawsze 1).

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⊕(k≫1)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⊕(k≫1)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

Spodobał Ci się eksperyment? Udostępnij go.

Jest darmowy — podeślij znajomym ze szkoły.

Teoria i wzory

Własność

Sąsiednie wartości różnią się dokładnie jednym bitem (odległość Hamminga równa 11).

Wzór

G(k)=k⊕(k≫1)G(k)=k\oplus(k\gg 1) gdzie ⊕\oplus to XOR, a ≫1\gg 1 przesunięcie bitowe w prawo o jeden.

Po co

W enkoderach pozycji i przełącznikach jednoczesna zmiana wielu bitów mogłaby dać błędny stan pośredni; kod Graya zmienia zawsze tylko jeden bit, co to eliminuje.

Oznaczenia: kk liczba, G(k)G(k) jej kod Graya, ⊕\oplus XOR, ≫\gg przesunięcie w prawo.

Uczysz? Umieść ten eksperyment na swojej stronie.

Darmowy widget — wklej na stronę szkoły, bloga lub notatki. Linkuje do pełnej wersji.

Uczysz w klasie albo korepetujesz? Prowadź uczniów w 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.