Министерство образования и науки РФ
Новосибирский государственный технический университет
Кафедра ВТ
Лабораторная работа №3
по дисциплине «Кодирование и передача данных»
« Циклические коды»
Факультет: АВТ Преподаватель: Титов Г. И.
Группа: АМ-310
Студенты: Сергиенко С.А.
Бондарь А.В.
Чадов К.С.
Новосибирск, 2006
1. Задание
Составить программу кодирования пересылаемого и декодирования полученного 4-разрядного двоичного числа с использованием циклического кода с порождающим полиномом A. Результаты работы составленных функций по кодированию и декодированию числа сравнить с результатами эталонных функций.
2. Выполнение
Исходный текст функции encode
char encode(char value)
{
unsigned char a=value,g=13; // исходное число и порождающий полином (типа А)
for(int i=0;i<4;i++,a<<=1) if (((a>>3)&1)==1) a=a^g;
if (i==4) a>>=1;
return (value<<3)|a;
}
Блок-схема алгоритма кодирования:
Рис.1 Блок-схема алгоритма кодирования
Исходный текст функции decode
char decode(char value)
{
unsigned char a=value>>3;
unsigned char b[7]={0,1,5,2,3,6,4};
for(int i=0;i<4;i++)
{
if (((a>>3)&1)==1) a=a^13;
a<<=1;
a|=(value>>(2-i))&1;
}
if (i==4) a>>=1;
value^=1<<b[a-1];
return value>>3;
}
Блок-схема алгоритма декодирования:
Рис. 2. Блок-схема алгоритма декодирования
3. Выводы
Результаты выполнения процедур совпадают с эталонными, что говорит о правильности работы алгоритмов.
Циклический код позволяет выявлять и исправлять одинарную ошибку и отслеживать наличие двойной ошибки. Но данный код относится к числу простых: есть коды с большими корректирующими возможностями.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.