background image

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 

0000 

0000 

0001 

0001 

0010 

0011 

0011 

0010 

0100 

0110 

0101 

0111 

0110 

0101 

0111 

0100 

1000 

1100 

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: 

 
 
 
 

background image

 
 
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