
- •3 Кодування в дискретних і неперервних каналах
- •3.1 Класифікація кодів і їх характеристики
- •3.2 Системи числення
- •3.3 Основні операції над елементами поля
- •3.4 Способи подання кодів
- •3.5 Надмірність кодів
- •3.6 Основні теореми кодування для каналів
- •4 Завадостійке кодування
- •4.1 Коди виявлення помилок
- •4.2 Коди з виправленням помилок
- •4.3 Код Хеммінга
- •4.6 Код Грея
3.3 Основні операції над елементами поля
Основа (алфавіт) q коду може мати різні значення (q ≥ 2). Методика побудови багатьох кодів грунтується на використанні властивостей послідовностей двійкових чисел. Розглянемо деякі операції над елементами двійкових кодів (q = 2). Правила додавання за модулем 2 визначаються такими опе-раціями:
0
0
= 0;1
1=0;0
1
= 1;1
0=1.
Наприклад, при додаванні за модулем 2 двійкових послідовностей чисел 0111000 і 10010 матимемо
0111000
10010
0101010
На відміну від звичайного арифметичного додавання операція додавання двійкових чисел за модулем 2 полягає в тому, що в даному разі розглядають конкретну пару двійкових знаків незалежно від інших чисел двійкової послідовності. Тому результат попередніх операцій при додаванні чергової пари двійкових знаків не враховують, тоді як при звичайних арифметичних операціях цей результат треба враховувати обов'язково, коли при додаванні двох двійкових чисел (наприклад, одиниць) записується 0, а 1 переноситься в старший розряд. Для прикладу, що розглядається, при арифметичній операції було б:
0111000
10010
1001010
Операція віднімання за модулем 2 нічим не відрізняється від операції додавання.
Множення та ділення двійкових чисел за модулем 2 виконують за допомогою операції додавання за модулем 2. Так, при множенні за модулем 2 множене зсувають у бік старшого розряду стільки разів, скільки розрядів є у множнику, а потім додають їх за модулем 2. Множене виписують тільки в тому разі, коли в множнику є 1. Якщо ж у множнику є 0, то черговий зсув виконують без виписування множеного:
1111
Х 1101
1111
1111
1111
1001011.
При діленні за модулем 2 дільник підписують під діленим так, щоб збігалися старші розряди. Якщо кількість розрядів діленого перевищує або дорівнює кількості розрядів дільника, то в частку переносять 1, після чого виконують додавання за модулем 2 й до здобутого числа дописують праворуч наступну цифру діленого. Якщо ж число остачі разом з дописаною цифрою дорівнює кількості розрядів дільника, то до частки дописують ще одну 1, а якщо ні – то 0 доти, доки кількість розрядів остачі не дорівнюватиме кількості розрядів дільника. Після цього виконують додавання за модулем 2. Операцію повторюють стільки разів, поки всі розряди діленого не перенесуться до остачі. Наприклад:
1001011
1101 10101 1011
1111
1101 1011
1000 11
1101
1011
1101
1101
1101
Дуже зручно операції додавання, віднімання, множення та ділення за модулем 2 виконувати з двійковими числами, записаними у вигляді поліномів. Так, двійкові комбінації 110010 і 100001 можна записати поліномами
V1(х) = x5 + х4 + х; V2(x) = x5 + 1.
Тоді додавання V1(x) V2(x) за модулем 2 дасть
Vx(x) K2(jc) = x5 + x4 + x + x5 + 1 = x4 +x+1 →010011.
Результатом множення буде
V1{x) V2(x) = (x5 + x4 + x)(x5 + 1) = x0 + x9 + x6 + x5 + x4 + x →11001110010.
Після ділення цих поліномів дістанемо
V1{x)
:V2(x)
=
(x5
+
x4
+
x):(x5
+
1) =
Операції
додавання, віднімання, множення та
ділення при основі q
> 2 коду
мають свої особливості. Всі недвійкові
коди (q-коди)
поділяються на дві великі групи: коди
з простою основою q
=p,
де
р
{3,5,7,11,13,...},
тобто з простими числами, що діляться
тільки на самих себе; коди з розкладною
основою q.
Найбільший
практичний інтерес становить підклас
кодів з розкладною основою q
- 2і,
елементи
якого мають інформаційну ємність l
бітів
і можуть бути порівняні з усіма
l-розрядними
двійковими числами, що дає змогу
використовувати двійкову техніку для
виконання операцій додавання, ділення
та множення.
До підкласу кодів з основою q = 2lналежать недвійкові коди, в яких q - {4,8,16,...}. Для таких кодів необхідно задати операції над елементами поля GF(q) – GF(21). Якщо взяти за основу поліномне подання елементів поля G= {0,1,2,..., q-1} = {0,...0201, 0l...0211,..., Іl...121,}2 = {0,1,..., хl-1 + ... + x+ 1}, то операція додавання двох елементів виконується як порозрядне додавання за модулем 2 двійкових елементів їх. Наприклад, при q = 8 = 23 матимемоG= {0,1,2,...,7}g= {000,001,010,...,111}2. Результати додавання за модулем 8 наведено в табл. 3.2.
Таблиця 3.2 – Результати додавання за модулем 8
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
1 |
1 |
0 |
3 |
2 |
5 |
4 |
7 |
6 |
2 |
2 |
3 |
0 |
1 |
6 |
7 |
4 |
5 |
3 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
4 |
4 |
5 |
6 |
7 |
0 |
1 |
2 |
3 |
5 |
5 |
4 |
7 |
6 |
.1 |
0 |
3 |
2 |
6 |
6 |
7 |
4 |
5 |
2 |
3 |
0 |
1 |
7 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Операція множення двох елементів алгоритмічно виконується як множення двох поліномів, що відповідають елементам поля, які множать за модулем незвідного полінома степеня. Так, при q = 8 = 23, l = 3 незвідний поліном степеня 1-3 вибираємо виду Р(х) = x3 + x + 1. Множимо два елементи поля; G= {0,1,2,. ..,7}8= {000,001,010,. ..,111}2. Здобуті значення ділимо на незвідний поліном і результати заносимо в табл. 3.3.
Таблиця 3.3 - Результати ділення на незвідний поліном
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
2 |
0 |
2 |
4 |
6 |
3 |
1 |
7 |
5 |
3 |
0 |
3 |
6 |
5 |
7 |
4 |
1 |
2 |
4 |
0 |
4 |
3 |
7 |
6 |
2 |
5 |
1 |
5 |
0 |
5 |
1 |
4 |
2 |
7 |
3 |
6 |
6 |
0 |
6 |
7 |
1 |
5 |
3 |
2 |
4 |
7 |
0 |
7 |
5 |
2 |
1 |
6 |
4 |
3 |
Операція віднімання збігається з операцією додавання, а операції ділення та обернення (піднесення до степеня -1) елементів виконуються як множення, оскільки обернення елемента а рівнозначне діленню: а-1 = 1/а.
Нехай, наприклад, потрібно знайти результат від ділення 5/6 = β. Це рівнозначне запису 6β = 5. З табл. 3.3 знаходимо, що необхідно помножити 6 на 4 (β = 4), щоб дістати 5. Таким чином, β = 4 й є результатом ділення 5/6.
Аналогічно можуть бути побудовані таблиці для операцій додавання та множення при інших основах кодів (q = 4,16,32,...). Так, для виконання розрахунків над полем GF(q) при q = 16 зручніше користуватися табл. 3.4, де наведено деякі форми подання елементів поля GF(16) на основі модульного полінома Р(х) = х4 + x + 1 (q = 16 = 24 –> l = 4), який задає розширювальне рівняння х4 = х + 1 і за аналогією рівняння β4 = β + 1.
При додаванні за допомогою табл. 3.4 примітивних елементів, наприклад β4 + β5 + β9 + β14, треба перевести їх з мультиплікативної форми в адитивну, скоротити повторення, а здобутий результат перенести знову в мультиплікативну (або десяткову) форму, тобто
β4 + β5 + β9 + β14 = β + 1 + β2 + β + β3 + β + β3 + l = β2 + β= β5=6.
Таблиця 3.4 - Форми подання елементів поля GF(16) на основі модульного полінома Р(х) = х4 + x + 1
Десяткове подання елементів поля GF(16) |
Подання елементів поля GF(16) у формі двійкового вектора |
Мульти
-плікативна форма у вигляді степеня
примітивного елемента
|
Адитивна форма
a,b,c,d {0,1} у базисах |
||||||
23 |
22 |
21 |
20 |
β5 |
β2 |
β' |
β" |
||
0 |
0 |
0 |
0 |
0 |
0
= β |
|
|
|
0 |
1 |
0 |
0 |
0 |
1 |
β° |
|
|
|
1 |
2 |
0 |
0 |
1 |
0 |
β' |
|
|
+β |
|
3 |
0 |
0 |
1 |
1 |
β4 |
|
|
+β |
+1 |
4 |
0 |
1 |
0 |
0 |
β2 |
|
β2 |
|
|
5 |
0 |
1 |
0 |
1 |
β8 |
|
β2 |
|
+1 |
6 |
0 |
1 |
1 |
0 |
β5 |
|
β2 |
+β |
|
7 |
0 |
1 |
1 |
1 |
β10 |
|
β2 |
+β |
+1 |
8 |
1 |
0 |
0 |
0 |
β3 |
β3 |
|
|
|
9 |
1 |
0 |
0 |
1 |
β14 |
β3 |
|
|
+ 1 |
10 |
1 |
0 |
1 |
0 |
β9 |
β3 |
|
+β |
|
11 |
1 |
0 |
1 |
1 |
β7 |
β3 |
|
+β |
+1 |
12 |
1 |
1 |
0 |
0 |
β6 |
β3 |
β2 |
|
|
13 |
1 |
1 |
0 |
1 |
β13 |
β3 |
β2 |
|
+1 |
14 |
1 |
1 |
1 |
0 |
β11 |
β3 |
β2 |
+β |
|
15 |
1 |
1 |
1 |
1 |
β'2 |
β3 |
β2 |
+β |
+ 1 |