Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное_пособие_информатика_v.doc
Скачиваний:
33
Добавлен:
04.11.2018
Размер:
606.21 Кб
Скачать

5.2.2. Модификация метода четности-нечетности

Исходное сообщение разбивается на группы.

а1

а2

а3

а4

а5

к1

а6

а7

а8

а9

а10

к2

а11

а12

а13

а14

а15

к3

а16

а17

а18

а19

а20

к4

а21

а22

а23

а24

а25

к 5

к6

к7

к8

к9

к10

Контрольные разряды выделяются всем группам по строкам и столбцам. Появляется возможность не только обнаружить, но и исправить ошибку.

Пример. Передается сообщение вида: 8 столбцов, 6 строк. Контрольный столбец –8, контрольная строка –6.

1

2

3

4

5

6

7

8

1

1

0

0

1

1

1

0

0

2

1

1

1

0

1

0

1

0

3

0

1

0

1

1

0

1

0

4

1

0

1

0

1

1

0

0

5

1

1

0

1

0

1

1

1

6

0

0

0

1

0

1

1

Проверка по каждой строке: к1=0, к2=1, к3=0, к4 =0, к 5=0. Проверка по каждому столбцу: к6=0, к7=1, к8=0, к9=0, к10=0, к11=0, к12=0. Ошибка возникла во второй строке и втором слева столбце.

5.2.3. Сочетание кодов Хэмминга+ четности(нечетности)

Добавим контрольный разряд четности к семиразрядному коду Хэмминга для десятичных цифр в двоично-десятичном коде 8421 и построим восьмиразрядный код Хэмминга с проверкой на четность.

Таблица 19

Десятичная цифра

p1

p2

m1

p3

m2

m3

m4

p0

0

0

0

0

0

0

0

0

0

1

1

1

0

1

0

0

1

0

2

0

1

0

1

0

1

0

1

3

1

0

0

0

0

1

1

1

4

1

0

0

1

1

0

0

1

5

0

1

0

0

1

0

1

1

6

1

1

0

0

1

1

0

0

7

0

0

0

1

1

1

1

0

8

1

1

1

0

0

0

0

1

9

0

0

1

1

0

0

1

1

Если кодовое расстояние увеличить до 4 путем присоединения контрольного разряда четности к семиразрядному коду Хэмминга, чтобы все 8 разрядов проверялись на четность, то построенный код можно использовать для исправления одиночной ошибки и обнаружения двойной.

Пусть произошли две ошибки. Полная проверка кода на четность будет успешной. Номер позиции, определенный по семи разрядам, укажет на ошибку- двойную(две ошибки).

Пусть произошла одиночная ошибка. Полная проверка кода обнаружит её. Если номер позиции равен 0, то ошибка в последнем контрольном разряде четности. Иное местоположение ошибки определяется по номеру позиции.

Нет ошибки. В этом случае все четыре проверки на четность успешны.

Пример. Исходное сообщение представлено в коде Хэмминга с проверкой на четность.

а)

Номер позиции

1

2

3

4

5

6

7

8

Сообщение

0

0

1

1

1

0

1

0

Полная проверка

0

0

1

1

1

0

1

0

0

1-я проверка на четность

0

1

1

1

1

2-я проверка на четность

0

1

0

1

0

3-я проверка на четность

1

1

0

1

1

Исправленное сообщение

Полная проверка на четность успешна (количество единиц четное – 0). Следовательно, ошибка либо двойная, либо её нет. Проверка по Хэммингу дает номер позиции, отличный от 0. Следовательно, в переданном сообщении есть двойная ошибка.

б)

Номер позиции

1

2

3

4

5

6

7

8

Сообщение

0

0

1

1

0

0

1

0

Полная проверка

0

0

1

1

0

0

1

0

1

1-я проверка на четность

0

1

0

1

0

2-я проверка на четность

0

1

0

1

0

3-я проверка на четность

1

0

0

1

0

Исправленное сообщение

0

0

1

1

0

0

1

1

Полная проверка на четность неуспешна (количество единиц нечетное – 1). Следовательно, ошибка одиночная. Проверка по Хэммингу дает номер позиции, равный 0. В переданном сообщении одиночная ошибка в восьмом контрольном разряде.

в)

Номер позиции

1

2

3

4

5

6

7

8

Сообщение

0

0

1

1

0

0

1

1

Полная проверка

0

0

1

1

0

0

1

1

0

1-я проверка на четность

0

1

0

1

0

2-я проверка на четность

0

1

0

1

0

3-я проверка на четность

1

0

0

1

0

Исправленное сообщение

0

0

1

1

0

0

1

1

Полная проверка на четность успешна. Следовательно, ошибка либо двойная, либо её нет. Проверка по Хэммингу дает номер позиции, равный 0. В переданном сообщении нет ошибок.

Рис.3. Схема алгоритма исправления одиночной ошибки и обнаружения двойной