Dzisiejsze ćwiczenia poświęcone będą kodowaniu cyklicznemu Hamminga. Nim jednak zaczniemy kodować przećwiczymy dzielenie wielomianów jako, że to kodowanie opiera się własnie na tej operacji. A zatem na początek podzielmy wielomian
. Robi się to dwoma sposobami. Pierwszym - normalnym powszechnie stosowanym i drugim - modulo 2 stosowanym właśnie przy kodowaniu Hamminga. Ale najpierw podzielmy ten wielomian co mamy normalnie. Więc będzie to wyglądało tak:
A teraz popatrzmy na ten drugi sposób dzielenia wielomianu modulo 2:
I teraz mając omówione dzielenie wielomianów wykonajmy takie zadanie. Mamy daną długość ciągu równą 5 i 3 pozycje kontrolne (stąd 2 pozycje informacyjne). Należy zaprojektować kod Hamminga w oparciu o powyższe dane przyjmując za wielomian generujący wielomian z dzielenia na poprzedniej stronie, czyli 1101. Pozycje informacyjne znamy. Naszym zadaniem będzie wyliczyć pozycje kontrolne. A więc:
Pozycje informacyjne Pozycje kontrolne
***
***
*** > Szukamy na początek powiedzmy tej pozycji
***
Na poczatek przyjmujemy, że wszystkie pozycje kontrolne będą równe 000. I mamy:
Wektor współczynników Wielomian
000
000
10 000
11 000
Za wielomian generujący przyjmujemy tak jak było wspomniane wielomian z dzielenia na poprzedniej stronie, czyli
. A dzielony będize wielomian ten co stoi na pozycji trzeciej i który mamy wyliczyć, czyli
. A zatem dzielimy. To, co otrzymamy za resztę z dzielenia (syndrom), będzie naszą pozycją kontrolną na pozycji trzeciej. I tak:
I mamy całą trzecią pozycję kodu. Pozostałe oblicza się analogicznie, natomiast skupmy się na razie na tej jednej. Należy się zawsze z tym liczyć, że na każdej z otrzymanych pozycji kodu może wystąpić błąd. Oto w jakich miejscach na takiej pojedynczej pozycji kodu może on się znajdować:
10000
01000
00100
00010
00001
Jak sprawdzić, czy wystapił błąd. Należy podzielić to, co otrzymaliśmy, czyli całą naszą pozycję przez wielomian generujący, czyli 1101. I mamy:
A nastepnie bierzemy pierwszy błąd, dodajemy do niego to, co otrzymaliśmy z dzielenia bez reszty, czyli 11. Stąd otrzymujemy 10011. Następnie dzielimy 10011 przez nasz wielomian generujący i ostatecznie otrzymujemy nasz błąd.
Wychodzi nam, że jest to trzeci rodzaj błędu, czyli 00100. A zatem Od naszego wyniku, czyli 10111 odejmujemy 00100 i mamy 10011. I to będzie nasza rzeczywista trzecia pozycja kodu już bezbłędna.
Na sam koniec ostatnie zadanie. Mamy dany plik 000010110***, gdzie trzy ostatnie gwiazdki oznaczają 3 bity CRC. Jak je obliczyć. Wystarczy za gwiazdki domyslnie podstawić same zera, czyli 000 i ten plik podzielic przez wielomian generujący powiedzmy z poprzedniego zadania, który wynosi 1101. I tak liczymy. Reszta z dzielenia będize naszym kodem CRC:
Należy pamiętać o tym, że wielomian generujący zawsze musi być trzeciego stopnia i pierwsza musi być zawsze jedynka (na stopniu 3).