Министерство образования и науки РФ
Новосибирский государственный технический университет
Кафедра вычислительной техники
Лабораторная работа № 3
по дисциплине “Кодирование и передача информации”
ЦИКЛИЧЕСКИЕ КОДЫ
Факультет: АВТ
Группа: АМ-609
Выполнили: Мартемьянов А.
Минина К.
Проверил: Титов Г. И.
Новосибирск, 2009г.
Изучить принцип кодирования с использованием циклических кодов. Разработать функции кодирования и декодирования байта данных.
char encode(char value)
{
char v=value<<3;
char polynom=0x68; //1101000
for(int i=0;i<4;i++){
if(!(v & (0x40>>i))){
polynom>>=1;
continue;
}
v=v ^ polynom;
polynom>>=1;
}
return (value<<3) | v;
}
2.2 Функция декодирования
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; //1101
a<<=1;
a|=(value>>(2-i))&1;
}
if (i==4) a>>=1;
value^=1<<b[a-1];
return value>>3;
}
Рисунок 1. Результаты работы реализованных функций в случае отсутствия ошибок
Рисунок 2. Результаты работы реализованных функций в случае однократной ошибки
Рисунок 3. Результаты работы реализованных функций в случае двойной ошибки
В ходе выполнения лабораторной работы был рассмотрен метод обнаружения и исправления ошибок с использованием циклических кодов. Этот метод требует для четырёх информационных битов резервирования трех контрольных, что позволяет принимающей стороне выявлять и исправлять однократные ошибки. Оставшийся восьмой бит не используется, что не позволяет обнаруживать двукратные ошибки.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.