Dzisiaj jest 24 kwietnia 2025 r.
Chcę dodać własny artykuł
Reklama

Kod Graya

Chcę dodać własny artykuł

Kod Graya

Kod Graya, znany także jako kod refleksyjny, to dwójkowy kod bezwagowy, w którym dwa kolejne słowa kodowe różnią się jedynie jednym bitem. Charakteryzuje się on również cyklicznością, co oznacza, że ostatnie i pierwsze słowo kodu spełniają tę samą zasadę. Kod Graya długości n to ciąg wszystkich 2^n różnych ciągów n cyfr {0,1}, zorganizowanych tak, że sąsiadujące ciągi różnią się dokładnie jedną cyfrą. Stosuje się go w przetwornikach analogowo-cyfrowych, zwłaszcza w systemach monitorujących zmieniające się wartości, takich jak czujniki położenia czy obrotu.

Rozszerzanie kodu Graya

Aby rozszerzyć kod Graya o jeden bit, należy wykonać następujące kroki:

  • Dopisać te same słowa kodowe w odwrotnej kolejności.
  • Do początkowych słów dodać bit o wartości 0, a do odbitych bit o wartości 1.

Konwersja między kodem Graya a kodem binarnym

Konwersja z naturalnego kodu binarnego na kod Graya odbywa się poprzez:

  • Przesunięcie liczby binarnej o jeden bit w prawo (dzielenie przez 2).
  • Wykonanie operacji XOR na odpowiednich bitach liczby oraz wyniku dzielenia.

W języku C można to zapisać jako: gray = liczba ^ (liczba / 2) lub gray = liczba ^ (liczba >> 1).

Konwersja z kodu Graya na naturalny kod binarny

Aby przeliczyć kod Graya na naturalny kod binarny, należy iteracyjnie wyznaczać kolejne cyfry:

  • Przyjąć pierwszą cyfrę naturalnego kodu równą pierwszej cyfrze kodu Graya.
  • Każdą kolejną cyfrę obliczać jako różnicę symetryczną (XOR) odpowiedniej cyfry kodu Graya i poprzednio wyznaczonej cyfry naturalnego kodu.

Na przykład, słowu 1010 w kodzie Graya odpowiada ciąg 1100 w kodzie naturalnym, co przekłada się na liczbę 12.

Kod Graya jako zagadnienie grafowe

W kontekście grafów, jeśli G jest grafem, a V(G) to zbiór {0,1}^n wszystkich binarnych ciągów długości n, to połączenie dwóch ciągów krawędzią następuje wyłącznie wtedy, gdy różnią się one na jednej pozycji. Cykl Hamiltona w G jednoznacznie wyznacza kod Graya długości n.