отчет лаба 1 Дианов
.docx
ФЕДЕРАЛЬНОЕ
АГЕНСТВО ВОЗДУШНОГО ТРАНСПОРТА
(РОСАВИАЦИЯ)
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)
Кафедра вычислительных машин, комплексов, сетей и систем.
Лабораторная работа защищена с оценкой ____________________
____________________
(подпись преподавателя, дата)
ЛАБОРАТОРНАЯ РАБОТА №1
по дисциплине «Теория информации и кодирования».
Тема: «Кодирования цифровой информации блоковым кодом Хэмминга».
Выполнила студентка группы ИС3-1
Магальник Екатерина Борисовна
Руководитель: Дианов Сергей Вячеславович
МОСКВА – 2024
1. Цель
Задачей лабораторной работы является получение практического опыта кодирования цифровой информации блоковым кодом Хэмминга на основе полученных теоретических сведений.
2. Задание
Закодировать сообщение (7, 4) - кодом Хэмминга, используя порождающую матрицу (7,4) - кода Хэмминга.
Исходное сообщение: 0111
Описание алгоритма кодирования:
Рисунок 1. Блок-схема программы кодирования.
3. Листинг программы
#include <iostream>
#include <conio.h>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
int a;
int data[10];
int dataatrec[10], c, c1, c2, c3, i;
int r1 = 0; int r2 = 0; int r3 = 0; int r4 = 0; int r5 = 1; int r6 = 1; int r7 = 1;
int fin1, fin2, fin3, fin4;
int fin[4];
cout << "Исходное сообщение U (вводите посимвольно через enter): \n";
cin >> data[3];
cin >> data[5];
cin >> data[6];
cin >> data[7];
//формирование проверочных разрядов
data[1] = data[3] ^ data[5] ^ data[7];
data[2] = data[3] ^ data[6] ^ data[7];
data[4] = data[5] ^ data[6] ^ data[7];
cout << "\nКодовое слово V :\n";
for (i = 1; i < 8; i++)
cout << data[i];
cout << "\nВведите принятое слово R (вводите посимвольно через enter): \n";
for (i = 1; i < 8; i++)
cin >> dataatrec[i];
// проверка синдрома
c1 = dataatrec[1] ^ dataatrec[3] ^ dataatrec[5] ^ dataatrec[7];
c2 = dataatrec[2] ^ dataatrec[3] ^ dataatrec[6] ^ dataatrec[7];
c3 = dataatrec[4] ^ dataatrec[5] ^ dataatrec[6] ^ dataatrec[7];
c = c3 * 4 + c2 * 2 + c1;
if (c == 0) {
cout << "\nОшибки в передаче нет\n";
}
else {
cout << "\nОшибка в " << c << " бите ";
cout << "\n Кодовое слово V: ";
for (i = 1; i < 8; i++)
cout << data[i];
cout << "\n принятое слово R: ";
for (i = 1; i < 8; i++)
cout << dataatrec[i];
cout << "\n Кодовое слово V с исправленной ошибкой: ";
//исправление ошибки
if (dataatrec[c] == 0)
dataatrec[c] = 1;
else
dataatrec[c] = 0;
for (i = 1; i < 8; i++) {
cout << dataatrec[i];
}
}
_getch();
return 0;
}
4. Результат работы программы
Рисунок 2. Кодирование и декодирование сообщения без ошибки.
Рисунок 3. Кодирование и декодирование без ошибки с исправлением ошибки.
5. Анализ полученных результатов
в качестве проверочных символов были выбраны 1, 2 и 4 биты
ошибок в битах принятого слова не может быть больше 1
в случае совпадения принятого слова и кодового слово, программа сообщает об отсутствии ошибок в передаче
в случае несовпадения принятого слова и кодового слово, программа указывает на порядковый номер бита с ошибкой (начинается порядок с 1), выводит кодовое слово и принятое слово, а также выводит исправленное слово.
6. Вывод
В данной лабораторной работе были получены навыки кодирования цифровой информации блоковым кодом Хэмминга, разработана программа для этого, освоены алгоритмы кодирования посредством блокового кода Хэмминга.
