> Gray | odbity | binarny <

// Kod Graya – binarny system liczbowy, w którym kolejne wartości różnią się tylko jednym bitem

0 znaków
0 znaków
[SINGLE-BIT]

Odległość jednostkowa

Między kolejnymi wartościami zmienia się tylko jeden bit.

[ERROR-REDUCTION]

Redukcja błędów

Zmniejsza błędy podczas konwersji analogowo–cyfrowej.

[CYCLIC]

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

DecBinaryGray
0000000
1001001
2010011
3011010
4100110
5101111
6110101
7111100

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

Inne języki