Kod Graya, zwany również kodem refleksyjnym – dwójkowy kod bezwagowy niepozycyjny, który charakteryzuje się tym, że dwa kolejne słowa kodowe różnią się tylko stanem jednego bitu. Jest również kodem cyklicznym, bowiem ostatni i pierwszy wyraz tego kodu także spełniają wyżej wymienioną zasadę.

Kodem Graya długości n jest ciąg wszystkich różnych ciągów n cyfr {0,1}, ustawionych tak, że dwa kolejne ciągi cyfr różnią się dokładnie jedną z nich.

Używa się go w przetwornikach analogowo-cyfrowych, szczególnie w systemach gdzie występują po sobie kolejne wartości np. czujniki położenia/obrotu. Kodów Graya można używać do etykietowania pojedynczych procesorów w sieci będącej hiperkostką.

Rozszerzanie kodu Graya Rozszerzanie kodu Graya o 1 bit przeprowadza się według następującego algorytmu: Dopisz te same słowa kodowe, ale w odwrotnej kolejności (odbicie lustrzane) Do początkowych wyrazów dopisz bit o wartości zero, natomiast do odbitych lustrzanie bit o wartości 1.

Przykład konstruowania kodu 4-bitowego kod 1-bitowy odbicie lustrzane dopisanie zer i jedynek 01 011000011110

kod 2-bitowy odbicie lustrzane dopisanie zer i jedynek 00011110 0001111010110100000001011010110111101100

kod 3-bitowy odbicie lustrzane dopisanie zer i jedynek 000001011010110111101100 0000010110101101111011001001011111100100110010000000000100110010011001110101010011001101111111101010101110011000

Przykład prostej konwersji pomiędzy naturalnym kodem binarnym a kodem Graya

Konwersja z naturalnego kodu binarnego na kod Graya Zamiast konstruowania tablicy kodu Graya dla liczby zapisanej w kodzie dwójkowym można znaleźć odpowiednik w kodzie Graya w następujący sposób: przesunąć liczbę w postaci binarnej o jeden bit w prawo (podzielić przez 2) wykonać operację XOR na odpowiednich bitach liczby i wyniku dzielenia liczby przez 2. W języku C tę operację można zapisać następującym wyrażeniem: gray = liczba ^ (liczba / 2) lub gray = liczba ^ (liczba >> 1).

Konwersja z kodu Graya na naturalny kod binarny Kolejne cyfry naturalnego kodu binarnego wyznacza się iteracyjnie, od najbardziej znaczącej, w oparciu o odpowiednią cyfrę kodu Graya i poprzednio wyznaczoną cyfrę kodu naturalnego: przyjmij pierwszą (najbardziej znaczącą) cyfrę kodu naturalnego równą pierwszej cyfrze kodu Graya każdą kolejną cyfrę oblicz jako różnicę symetryczną (XOR) odpowiedniej cyfry kodu Graya i poprzednio wyznaczonej cyfry kodu naturalnego. Przykład przeliczenia:

Krok Kod Graya XOR Kod naturalny 1. 1010 1 → 1 1––– 2. 1010 0 xor 1 → 1 11–– 3. 1010 1 xor 1 → 0 110– 4. 1010 0 xor 0 → 0 1100

Wynik: słowu 1010 w kodzie Graya odpowiada ciąg 1100 w kodzie naturalnym, czyli liczba 12. Rzeczywiście, jak pokazuje przedstawiona wyżej konstrukcja, 1010 jest trzynastym słowem kodowym 4-bitowego kodu, a więc (przy numeracji rozpoczynającej się od zera) odpowiada mu liczba 12.

Kod Graya jako zagadnienie grafowe Niech G będzie grafem. Jeżeli będzie zbiorem wszystkich ciągów cyfr binarnych długości n i połączymy dwa ciągi (wierzchołki) krawędzią tylko wtedy, gdy różnią się one na jednej pozycji, to cykl Hamiltona w G wyznacza jednoznacznie kod Graya długości n.

Zobacz też dwójkowy system liczbowy kod 1 z n kod Johnsona metoda Karnaugha

Linki zewnętrzne

Gray code , Encyclopedia of Mathematics, encyclopediaofmath.org [dostęp 2025-12-20].

Kategoria:Teoria grafów Kategoria:Komputerowe reprezentacje danych Graya