Liczby dziesiętne w pierwszej kolumnie oznaczają kolejną pozycję ciągu kodowego, o długości N,. Jeśli w procesie kodowania otrzymamy ciąg 7-bitowy, możemy ograniczyć tabelę. Jeśli natomiast ciąg kodowy będzie miał większą liczbę bitów - musimy tabelę rozszerzyć.
W przykładzie z tab. 5.1 powstały cztery kolumny bitów i jednocześnie cztery zespół) kontrolne: I, II, III, IV.10
W kolejnym etapie wyznaczamy pozycje ciągu kodowego, które należą do danego zespołu kontrolnego. Do danego zespołu należą te pozycje, przy których w danej kolumnie widnieje logiczne „I". Z powyższego przykładu otrzymujemy:
I e (8.9, 10. II, 12,13. 14. 15)
II €(4.5,6,7,12,13,14,15)
III €(2.3.6.7,10.11,14,15)
IV €(1,3.5,7.9.11.13.15)
Biorąc pod uwagę właściwości statystyczne, bity ciągu kontrolnego znajdują się na pozycjach, które należą tylko do jednego zespołu kontrolnego, czyli: I, 2. 4, 8. 16 .. Zawsze jest to pozycja, będąca kolejną potęgą 2.
Na zakończenie należy policzyć sumy modulo 2 z bitów, znajdujących się na pozycjach należących do danego zespołu kontrolnego i tak obliczony bit wstawić na miejsce bitu kontrolnego należącego do danego zespołu kontrolnego (dla I jest to 8).
W procesie odbierania i dekodowania ciągu kodowego, wykonuje się te same procedury, z tym że licząc sumy modulo 2 każdego zespołu kontrolnego, uwzględnia się również bity kontrolne. Jeśli otrzymany syndrom składa się z samych 0 (np. 0000). to odebrany ciąg nic zawiera błędu (‘przecież nie może wskazywać na zerową pozycję ciągu kodowego). Jeśli natomiast otrzymana suma kontrolna jest niezerowa, to został wykryty błąd odebranego ciągu, występujący na pozycji wyrażonej przez ten ciąg (np. 0010 odpowiada drugiej pozycji).
Uwaga: przy zamianie ciągu binarnego na liczbę dziesiętną (nr błędnej pozycji), należ)' zamączyć, który bit jest najmłodszy. W przeciwnym przypadku otrzymamy błędną pozycję wskazującą na błąd w odebranym ciągu.
Uwaya: kod Hamming* skutecznie wykrywa oraz koryguje tylko jeden elementarny błąd binarny. Prawidłowo utworzony kod potrafi również wykryć wszystkie podwójne błędy, jednak bez skorygowania błędnych pozycji. Może także dojść do wskazania pozycji zawierającej prawidłowy bit lub pozycji, której nic ma w ciągu kodowym (np 15. dla ciągu o długości 14).
5.2. /udania
1. Proszę zakodować następujące ciągi 5-bitowe:
a) 11010 -> 10 I Q I 0 1 0 0
2. Proszę zakodować następujące ciągi 8-bitowc:
a) 10110100 =>QQ 1 Q0 I 110 100
3. Proszę zakodować następujące ciągi informacyjne w optymalnym kodzie Hamminga:
a) 0110101101101011
b) 1110110110010111
c) oooioooiomoioi
d) 1111111111111111 c) oooooooooooooooi
0 0110110110110110
4. Odebrano następujące ciągi kodowe Proszę obliczyć syndrom dekodera, ustalić czy powstał błąd i określić na której pozycji
c.x. = 1010101 c.x. = 0010101 c.x. = 10101II c.x. = 0011010 c.x.= 1101101
5. Odebrano następujące ciągi kodowe. Proszę obliczyć syndrom dekodera, ustalić, czy powstał błąd i określić na której pozycji. Proszę podać prawidłowy ciąg informacyjny.
c.x. = 000001110100 c.x. = 001011110100 c.x. = 001001100100
c.x.= 101001010011
c.x. - 110010111011
6. Oblicz czy ciąg odbiorczy jest poprawnym ciągiem kodowym kodu Hamminga (optymalnego), czy też błędny; na jakiej pozycji jest błąd; jaki jest ciąg informacyjny?
1 010110I1I
óoT11 oo11 oo111
1 1 00 1 1 0I0I 1 100
I 1 1 00 1 0 1 1 l 1 1oo 0101010101III1
7. Oblicz czy ciąg jest kodem Hamminga; jeżeli tak. to sprawdź czy jest poprawny. Jaki jest ciąg informacyjny?
011011001011011 (15-bitów)
1111000100101111 (16-bitów)
8. Zakoduj w kodzie Hamminga następujące ciągi informacyjne:
10 101 1110 001100
9. Zakoduj w kodzie Hamminga słowo ■KONIEC", które zostało przedstawione kodem ASCII (jako kod źródła) jako słowa 7-bitowe. Kr75.0-*79, N=78, C=67, E“69,1 73. Poszczególne znaki koduj osobno.