, n = nu + nk , n – значность кода,
Количество контрольных разрядов можно определить по таблице. Номера позиций контрольных символов выбирают по закону 2i, i = 0,1,2… Значения контрольных разрядов выбирают следующим образом.
Алгоритм:
1) Составляется вспомогательная таблица для ряда натуральных чисел в двоичной коде, Число строк в таблице n – значность кода. В каждой i –й строке вспомогательной таблицы ставится в соответствие ai коэффициент, который участвует в проверке, ai – коэффициенты, из которых составлена кодовая комбинация
n |
Код |
Коэффиц-иенты |
n |
Код |
Коэффици-енты |
1 |
0001 |
а1 |
7 |
0111 |
a7 |
2 |
0010 |
a2 |
8 |
1000 |
a8 |
3 |
0011 |
a3 |
9 |
1001 |
a9 |
4 |
0100 |
a4 |
10 |
1010 |
a10 |
5 |
0101 |
a5 |
11 |
1011 |
a11 |
6 |
0110 |
a6 |
12 |
1100 |
a12 |
На основании этой таблицы составляется схема проверок, которые производятся суммированием выбранных проверочных коэффициентов . Для каждой поверки выбираются свои проверочные коэффициенты. В первую проверку входят коэффициенты, которые содержат в младших разрядах единицы. Во вторую проверку входят коэффициенты содержащие единицу во втором разряде(a2,a3,a6,…). В третью проверку входят коэффициенты содержащие единицу в третьем разряде.
Схему проверок сведём в отдельную таблицу.
Nпроверок |
Схема |
Nконтрольных. символов |
1 |
a1 + a3 + a5 + a7 + a9 + a11 |
1 |
2 |
a2 + a3 + a6 + a7 + a10 + a11 |
2 |
3 |
a4 + a5 + a6 + a7 + a12 |
3 |
4 |
a8 + a9 + a10 + a11 + a12 +… |
4 |
Количество проверок равно количеству разрядов. Контрольные коэффициенты выбираются таким образом, чтобы проверочная сумма была равна нулю. Т.е. если количество единиц чётное, то контрольный разряд нулевой, если нечётнно, то контрольный разряд равен единице.
Пример: Построить код Хэминга по комбинации
0101 nu = 4 nk = 3 nk = log(nu + 1) + log(nu + 1)
1,2,3 k = 7 2i = 1,3,4,8
Контрольные разряды будут занимать позиции 1,2,4.
Код Хэминга
а1a2a3a4a5a6a7
k1k20 k31 0 1 - макет
1) a1 + a3 + a5 + a7 = k1 + 0 + 1 + 1 = 0 Þ k1 = 0
2) a2 + a3 + a6 + a7 = k2 + 0 + 0 + 1 = 0 Þ k2 = 1
3) a4 + a5 + a6 + a7 = k3 + 1 + 0 + 1 = 0 Þ k3 = 0
Код Хэминга будет иметь вид 0100101
В процессе декодирования производится проверка на чётность по схеме проверок и строится вектор ошибок S(Sk, …,S1). Если проверочная сумма равна нулю, то в вектор ошибки записывается ноль иначе записывается единица. Всего делается nk проверок. В результате первой проверки определяется составляющая S1, последней составляющая Sk. Если принятая кодовая комбинация содержит ошибку, то в векторе S образуется число, которое указывает номер ошибочной позиции.
|
Пример: Послана комбинация vk = 0100101. Принятая комбинация vx = 0100111, т.е. имеется ошибка в шестом разряде Составим схему проверок.
1) a1 + a3 + a5 + a7 = 0 + 0 + 1 + 1 = 0 Þ S1 = 0
2) a2 + a3 + a6 + a7 = 1 + 0 + 1 + 1 = 1 Þ S2 = 1
3) a1 + a5 + a6 + a7 = 0 + 1 + 1 + 1 = 1 Þ S3 = 1
S = 110 ® это двоичное число шесть, что соответствует разряду a6, следовательно, ошибка в шестом разряде.
Для исправления одинарной и обнаружение двойной ошибки, кроме проверок по контрольным позициям проводят проверку на чётность для каждого кода. Для этого при формировании кода каждому коду в конце кодовой комбинации добавляется контрольный символ так, чтобы сумма единиц в полученной комбинации всегда была чётной.
Особенности декодирования.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.