При изложении теории циклических кодов любая кодовая комбинация A=((an-1, an-2,…,a0),ai=0,1) отождествляется с многочленом F(x) степени <= (n-1), определяемым следующим образом:
F(x)= an-1 x n-1 +an-2 xn-2 +…+ a1x+ a0
Например, последовательность 10110 в полиномиальном виде запишется следующим образом:
F(x)= 1 x 4 +0 x3 +1 x2+ 1x+ 0=x 4 + x2+x
Запись кодовой комбинации в виде многочлена не всегда определяет длину кодовой комбинации. Например, при n=5 многочлену x2+1 соответствует кодовая комбинация 00101, поэтому при переходе к записи в виде кодовой комбинации необходимо дописывать нулевые старшие разряды.
При описании циклических кодов с помощью полиномов над ними осуществляют операции сложения и перемножения, причем, складывая и перемножая полиномы из одного (например, двоичного) поля, однозначно получают полином с коэффициентами из того же поля.
Для двоичных кодов действия над кодовыми комбинациями производятся в поле Галуа GF(2). Таблицы сложения и умножения для поля GF(2) приведены ниже:
+ | 0 1 |
0 1 | |
1 0 |
х | 0 1 |
0 0 | |
0 1 |
Рассмотрим примеры арифметических действий над кодовыми комбинациями F1(x) и F2(x)
F1(x)= x 3 + x+1-> 1011
F2(x)= x 2 + x+1-> 0111
F1(x)+ F2(x)= x 3 + x2+(1+1)x+(1+1)= x 3 + x2 -> 1100
F1(x)x F2(x)=(x 3 + x+1)x(x 2 + x+1)= x 5 +x 4 + x3+ x3+ x 2 + x+ x 2 + x+1= x 5 +x 4+1 -> 110001
x 3 + x+1 | x+1____
x 3 + x2 | x 2 + x
------------
x 2 + x+1
x 2 + x
-------------
1 – остаток
Эти же операции можно проделать с двоичными числами.
Для обеспечения свойства замкнутости умножение полиномов производится по модулю Pr(x). Это означает, что в качестве результата умножения принимается остаток от деления обычного произведения полиномов на полином Pr(x).
Умножение по модулю m сводится к тому, что обычное произведение этих чисел делится на m и записывается остаток. Например, 2х4=3 (мод.5), т.е. 2х4=8, 8:5 имеет в остатке 3. Это число и является результатом умножения по модулю 5.
Указанная операция над многочленами не приводит к появлению полинома с большей степенью, чем заданная длина кода.
Рассмотрим код с n=5. Возьмем P1(x)= x 4 + x+1 и P2(x)= x 4 . Произведем обычное умножение полиномов:
P3(x)= P1(x) P2(x)= (x 4 + x+1) x 4 = x 8 + x5+x4
Полином P3(x), имея степень n=8, не принадлежит коду с n=5.
Рассмотрим умножение по модулю Pr(x).При этом полином Pr(x) должен иметь степень r<n. Выберем Pr(x)= x 3 + x2+1. Находим
P1(x) P2(x) [mod Pr(x)]= P1(x) P2(x)/ Pr(x), т.е. x 8 + x5+x4/ (x 3 + x2+1)= x5+x4+ x 3 + x2+x
R(x)= x2+x
Полученный остаток R(x) и является результатом произведения полиномов P1(x), P2(x) по модулю Pr(x). Он именуется вычетом по многочлену Pr(x).