русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Код Хемминга


Дата добавления: 2015-08-14; просмотров: 1059; Нарушение авторских прав


 

Рассмотрим код Хемминга, исправляющий одиночные ошибки.

Код Хемминга, как и любой код содержит комбинацию m информационных и r = n-m избыточных символов. Избыточная часть кода строится так, чтобы при декодировании можно было установить не только наличие ошибки, но и ее положение. Это достигается путем многократной проверки принятой комбинации на четность, количество проверок равно значению избыточных символов r. При каждой проверке охватывается часть информационных символов и один из избыточных, при этом получают один контрольный символ. Если результат проверки дает четное число, то контрольному символу присваивается значение 0, если нечетное - 1. В результате всех проверок получается r - разрядное двоичное число, указывающее номер искаженного символа. Для исправления ошибки значение этого символа (бита) изменяется на обратное.

Необходимое количество проверочных символов r или значность кода для кодов Хемминга, исправляющих одиночные ошибки определяется из ранее полученного соотношения:

2m £ 2n/(1+ n). (2.7)

Значения проверочных символов и номера их позиций по методу Хемминга устанавливается одновременно с выбором контролируемых групп кодовых комбинаций. При этом исходят из следующего: в результате первой проверки получают контрольное число, если оно равно 1, то один из символов первой проверенной группы искажен. Для выяснения вопроса, какой из символов может быть искажен, рассмотрим таблицу 2.4, в которой представлен натуральный ряд четырехразрядных контрольных чисел в двоичной системе счисления.

Таблица 2.4

№ п./п. Символы разрядов контрольного числа
  (ст) (мл)

 



Как видно из таблицы 2.4, если младший разряд контрольного числа содержит 1, то искажение должно быть в одной из нечетных позиций кодовой комбинации. Следовательно, первой проверкой должны быть охвачены символы с нечетными номерами. Если результат второй проверки даст 1, то получим 1 во втором разряде контрольного числа. Следовательно, второй проверкой должны быть охвачены символы с номерами, содержащими 1 во втором разряде двоичной записи этого номера: 2, 3, 6, 7, 10 и т.д. Аналогично при третьей проверке проверяться символы, номера которых в двоичной записи содержат 1 в третьем разряде: 4, 5, 6, 7, 12 и т.д.

Такие рассуждения позволяют образовать таблицу 2.5 проведения проверок.

 

Таблица 2.5

№ проверки номера проверяемых позиций номера позиций контрольных символов
1,3,5,7,9,11,13... 2,3,6,7,10... 4,5,6,7,12... 8,9,10,11,12...

 

Если символы проверяемой кодовой комбинации обозначить через ai, то проверочные суммы Si можно записать следующим образом:

S1 = а1 а3 а5 а7 а9 .....

S2 = а2 а3 а6 а7 а10 .....

S3 = а4 а5 а6 а7 а12 .....

S4 = а8 а9 а10 а11 а12 .....

Номер позиции символа, в котором произошла ошибка в процессе приема-передачи комбинации, определяется следующим двоичным числом: N2=....Si....S4 S3 S2 S1.

С целью упрощения операций кодирования и декодирования целесообразно выбирать такое размещение проверочных символов в кодовой комбинации, при котором каждый из них включается в минимальное число проверяемых групп (лучше в одну группу). Нетрудно отметить из таблицы 2.4, что символы 1, 2, 4, 8......2n встречаются в каждой группе только один раз. Это связано с тем, что они являются степенью числа 2 и их двоичный код в таблице 4 содержит только одну единицу. Эти символы стоят на первом месте в правой части выражений для Si. Таким образом, в коде Хемминга символы а1, а2, а4, а8.... должны быть проверочными, а символы а3, а5, а7, а9.... - информационными.

При передаче значения проверочных символов устанавливаются в кодовой комбинации такими, чтобы суммы S равнялись нулю (т.е. были бы четными числами), т.е. значения проверочных символов а1, а2, а4.... выбираются из условия равенства Si нулю.

Представим в качестве примера в коде Хемминга двоичную комбинацию 10010. Для нее число информационных символов m=5, при этом максимальное число передаваемых кодов равно 32. Разрядность кода Хемминга для m=5 должна быть равной 9 (n=9). Для девятиразрядного кода символы а1, а2, а4 и а8 являются проверочными, а символы а3, а5, а6, а7 и а9 - информационными. Для заданного кода а3=0, а5=1, а6=0, а7=0 и а9=1, тогда:

S1 = а1 0 1 0 1 = а1 0=0, откуда следует, что а1=0;

S2 = а2 0 0 0 = а2 0=0, т.е. а2 =0;

S3 = а4 1 0 0 = а4 1=0, т.е. а4 = 1.

Аналогично: а8 = 1.

Следовательно, код Хемминга для кода 10010 будет равен 110011000.

Если при приеме-передаче произошла однократная ошибка в пятом символе, т.е. код при приеме принял значение 110001000, то в результате первой проверки будет получено число 1, в результате второй - 0, третьей - 1 и четвертой - 0. Таким образом, в результате проверок будет получено контрольное число 0101, указывающее на искажение пятого символа, принятой кодовой комбинации.

Если произойдет однократная ошибка приема-передачи первого символа кодовой комбинации, то сумма S1 будет равна 1, а остальные суммы будут равны 0. Полученное контрольное число N будет равно 0001, что указывает на искажение первого символа принятого кода. Аналогичные контрольные числа будут получены при искажениях 2-го, 3-го и т.д. символов кода. Отметим, что для исправления ошибки принятой кодовой комбинации необходимо лишь изменить значение искаженного символа на противоположное.



<== предыдущая лекция | следующая лекция ==>
Инверсное кодирование | Современные методы кодирования


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.