background image

Kod Hamminga 

Kod  Hamminga  jest  binarnym  kodem,  który  umożliwia  odtworzenie  danych  po  wystąpieniu  błędu 
transmisji.  Zakodowana  informacja  składa  się  z    n-bitowego  kodu  i    k  bitów  parzystości.  Bity 
parzystości umieszczone są na pozycjach o numerach 2

i

, i=0,1,2,… i każdy z nich kontrolują określone 

bity.  Na  kontrolowanych  pozycjach  występuje  parzysta  ilośd  „1”.  Oto  pozycje  kontrolowane  przez 
kolejne bity parzystości:  

–  bit 1 -  1, 3, 5, 7, 9, 11 

–  bit 2 – 2, 3, 6, 7, 10, 11 

–  bit 4 – 4, 5, 6, 7 

–  bit 8 – 8, 9, 10, 11 

W ogólności bit n jest kontrolowany przez bity b

1

,b

2

,….b

k 

, gdzie b

1

+b

2

+…+b

=n.  

Np. bit 10 kontrolowany jest przez bity 2 i 8, bo 2+8=10, bit 6 przez bity 2 i 4 , bo 2+4=6, bit 7 przez 
bity 1, 2, 4, bo 1+2+4=7. 
 

Rozważmy kodowanie znaku ASCII zapisanego na 7 bitach. Na pozycjach 1, 2, 4, 8 znajdują się bity 
kontrolne. Na pozostałych bitach zapisywany jest kod litery.  

Przykład: 

Litera:          

Kod ASCII:   

98 

Kod ASCII binarnie:  

1100010 

 

10 

11 

 

 

 

Bit  1  -  Na  pozycjach    3,5,7,9,11  są  dwie  wartości  „1”,  jest  to  liczba  parzysta,  więc  bit  1 
przyjmuje wartośd „0”. 

 

Bit 2 - Na pozycjach  3,6,7,10,11 są dwie wartości „1”, więc bit 2 przyjmuje wartośd „0”. 

 

Bit  4  -  Na  pozycjach    5,6,7  jest  jedna  wartośd  „1”,  jest  to  liczba  nieparzysta,  więc  bit  4 
przyjmuje wartośd „1”. 

 

Bit  8  -  Na  pozycjach    9,10,11  jest  jedna  wartośd  „1”,  jest  to  liczba  nieparzysta,  więc  bit  8 
przyjmuje wartośd „1”. 
 

Kod Hamminga litery b to: 00111001010. 
Jeśli w transmisji wystąpiłby błąd na jednej pozycji, to niektóre bity parzystości byłyby niepoprawne. 
Suma  pozycji  niepoprawnych  bitów  parzystości  wskazuje  przekłamaną  pozycję.  Należy  ją  wówczas 

1,3,5,7,9,11

4,5,6,7 

8,9,10,11 

2,3,6,7,10,11 

background image

poprawid i kodowanie jest poprawne. Jeśli np. w transmisji litery b wystąpiłby błąd i otrzymalibyśmy 

taki  kod

:    0011100

0

010

,  to  niepoprawny  byłby  jedynie  8  bit  parzystości.  Należałoby  zatem 

zamienid „0” występujące na pozycji 8 na „1”, w wyniku czego uzyskujemy poprawny kod litery b – 

0011100

1

010. 

 

Jeśli  po  transmisji  uzyskalibyśmy  kod: 

00111001000

    to  niepoprawne  byłyby  bity  parzystości  o 

numerach 2 (bo na pozycjach 2,3,6,7,10,11 jest tylko jedna „1” – na pozycji 3) oraz 8 (bo na pozycjach 
8,9,10,11 jest tylko  jedna „1” – na pozycji 8), więc przekłamana pozycja to 2+8=10. Po zamianie bitu 
o numerze 10 z „0” na „1” otrzymujemy poprawny kod.