Kod Gray’a
Kod Graya to kod binarny, w którym kolejne słowa różnią się tylko jednym bitem. Jest to wygodny
sposób kodowania następujących po sobie stanów, gdyż przejście do kolejnego słowa kodowego
wymaga modyfikacji jedynie pojedynczego bitu.
Poniższa tabelka przedstawia kolejne wartości dla kodu binarnego pozycyjnego i kodu Graya.
Liczba dziesiętna
Kod 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
8
1000
1100
9
1001
1101
10
1010
1111
11
1011
1110
12
1100
1010
13
1101
1011
14
1110
1001
Aby utworzyd kod Graya i-tego wyrazu należy:
Utworzyd jego kod binarny – będzie to liczba l1
Przesunąd l1 o jeden bit w prawo, odrzucając ostatni bit i uzupełniając na początku bitem
„0” – jest to liczba l2
Wykonad bitowa operację xor na liczbach l1 i l2 – uzyskana liczba jest kodem Graya liczby
l1
Przykład:
Kod Graya liczby 13:
l1 = 1101
l2 = 0110
xor -------------
1011
Istnieją różne algorytmy zamiany kodu Graya na binarny i odwrotnie.
Dwie przykładowe procedury zamiany słowa o długości m zapisanego w kodzie Graya (g) na kod
binarny (b) przedstawione są poniżej:
procedure G-B_1
begin
b[1]=g[1];
v=g[1];
for k=2 to m do
begin
if g[k]==1 then v = not v;
b[k]=v;
end
end
procedure G-B_2
begin
b[1]=g[1];
for k=2 to m do
b[k]=g[k] xor b[k-1];
end
Natomiast procedura zamiany słowa o długości m zapisanego w kodzie binarnym (b) na kod Graya
(g) przedstawia się następująco:
procedure B-G
begin
g[1]=b[1];
for k=2 to m do
g[k]=b[k] xor b[k-1];
end