Hammingovy kódy patří do třídy tzv. samoopravných kódu. Slouží nejen k detekci chyby v přenosu, ale při splnění určitých parametrů mohou chyby i napravit.

Hammingovo kódování

Hammingův kód je speciálním případem samoopravného kódu. Tedy takového kódování, kde je jednak možné detekovat větší množství chyb, ale také určité množství chyb vzniklých při přenosu opravit.

Hammingův (7,4) kód

Představuje nejčastější implementaci Hammingova kódu. Kód rozděluje vstupní slovo do čtyř-bitových bloků, ke kterým přidává tři paritní bity, vzniká tak sedmi-bitový výstup. Pomocí tohoto kódování je možné jednu chybu v kódu opravit a vícečetné chyby detekovat.

Struktura výsledné zprávy má (vektorový) tvar:

(p1, p2, d1, p3, d2, d3, d4)

Kde di představuje datové bity (určené z výchozí zprávy určené ke kódování) a pi představuje paritní bity, které se vypočtou jako:

p1 = d1 XOR d2 XOR d4 p2 = d1 XOR d3 XOR d4 p3 = d2 XOR d3 XOR d4

Takto zakódovaný blok se odešle příjemci.

Detekce a oprava chyb

Předpokládáme, že příjemce obdrží blok o obecné struktuře:

(a1, a2, a3, a4, a5, a6, a7)

Pokud příjemce obdrží blok uvedený výše, vypočítá takzvaný syndrom, to se provede jako:

s1 = a4 XOR a5 XOR a6 XOR a7 s2 = a2 XOR a3 XOR a6 XOR a7 s3 = a1 XOR a3 XOR a5 XOR a7

pokud je zpráva přijata bezchybně, je s1 = s2 = s3 = 0 (vše je nulové). Pokud je zpráva přijata s chybou, je alespoň jedno si nenulové. Pořadí bitu aj, který obsahuje chybu se určí ze vzorce:

j = 4·s1 + 2·s2 + s3

Hodnota takto určeného bitu se neguje, tím je oprava ukončena.

Hammingův kód (8,4)

Se od kódu (7,4) liší tím, že na konec přidává další paritní bit. Díky němu je schopen lépe detekovat chyby, struktura kódu je následující:

(p1, p2, d1, p3, d2, d3, d4, p4)

Kde p4 = p1 XOR p2 XOR d1 XOR p3 XOR d2 XOR d3 XOR d4.

Jinými slovy p4 kontroluje paritu celého bloku (7,4). Vše ostatní je stejné jako výše.