Контрольная работа Ковырзин А.А.(Хэмминг). Алгоритмы кодирования и декодирования по Хэммингу для обучающихся по специальности
Скачать 50.01 Kb.
|
Алгоритм кодированияВ соответствии с заданным вариантом, требуется сгенерировать код Хемминга для следующего информационного кодового слова:
В приведённой ниже таблице в первой строке даны номера позиций в кодовом слове, во второй – условное обозначение битов, в третьей – значения битов:
Вставим в информационное слово контрольные биты слово r0...r4 таким образом, чтобы номера их позиций представляли собой целые степени числа два: 1, 2, 4, 8, 16… Получим 20-разрядное с слово с 15 информационными и 5 контрольными битами. Первоначально контрольные биты устанавливаем равными нулю. На рисунке контрольные биты выделены цветом:
Добавим к таблице 5 строк (по количеству контрольных битов), в которые поместим матрицу преобразования. Каждая строка будет соответствовать одному контрольному биту (нулевой контрольный бит – верхняя строка, четвёртый – нижняя), каждый столбец – одному биту кодируемого слова. В каждом столбце матрицы преобразования поместим двоичный номер этого столбца, причём порядок следования битов будет обратный – младший бит расположим в верхней строке, старший – в нижней. Например, в третьем столбце матрицы будут стоять числа 11000, что соответствует двоичной записи числа три: 00011:
В правой части таблицы мы оставили пустым один столбец, в который поместим результаты вычислений контрольных битов. Вычисление контрольных битов производим следующим образом. Берём одну из строк матрицы преобразования (например, r0) и находим её скалярное произведение с кодовым словом, то есть перемножаем соответствующие биты обеих строк и находим сумму произведений. Если произведение получилось больше единицы, находим остаток от его деления на 2. Иными словами, мы подсчитываем сколько раз в кодовом слове и соответствующей строке матрицы в одинаковых позициях стоят единицы и берём это число по модулю 2. r0=(1·0+0·0+1·1+0·0+1·1+0·1+1·1+0·0+1·1+0·1+1·0+0·1+1·0+0·0+1·0+0·0+1·1+0·1+1·1+0·0) mod 2 = 6 mod 2 = 0 r1=(0·0+1·0+1·1+0·0+0·1+1·1+1·1+0·0+0·1+1·1+1·0+0·1+0·0+1·0+1·0+0·0+0·1+1·1+1·1+0·0) mod 2 = 6 mod 2 = 0 r2=(0·0+0·0+0·1+1·0+1·1+1·1+1·1+0·0+0·1+0·1+0·0+1·1+1·0+1·0+1·0+0·0+0·1+0·1+0·1+1·0) mod 2 = 4 mod 2 = 0 r3=(0·0+0·0+0·1+0·0+0·1+0·1+0·1+0·1+1·1+1·1+1·0+1·1+1·0+1·0+1·0+0·0+0·1+0·1+0·1+0·0) mod 2 = 3 mod 2 = 1 r4=(0·0+0·0+0·1+0·0+0·1+0·1+0·1+0·1+0·1+0·1+0·0+0·1+0·0+0·0+0·0+1·0+1·1+1·1+1·1+1·0) mod 2 = 3 mod 2 = 1
Полученные контрольные биты вставляем в кодовое слово вместо стоявших там ранее нулей. Кодирование по Хэммингу завершено. Полученное кодовое слово: 00101111110100011110. |