код с обнаружением ошибок.

advertisement
Практическая работа № 5
Формирование кода с обнаружением ошибок
Краткая справка. Разработчики сетей создали две основные стратегии для
борьбы с ошибками. Каждый метод основывается на добавлении к
передаваемым данным некоторой избыточной информации. В одном случае этой
информации должно быть достаточно, чтобы выявить, какие данные должны
были прийти. В другом случае избыточной информации должно быть
достаточно только для того, чтобы получатель понял, что произошла ошибка (без
указания её типа) и запросил повторную передачу. Первая стратегия использует
коды, называющиеся корректирующими, или кодами с исправлением ошибок.
Вторая - код с обнаружением ошибок.
В высоконадёжных каналах, таких как оптоволокно, дешевле
использовать код с обнаружением ошибок и просто заново передавать
случайные поврежденные блоки. Однако, скажем, беспроводные соединения,
в которых может возникать множество ошибок, чаще используют коды с
избыточностью, достаточной для того, чтобы приёмник мог определить,
какие данные должны были прийти. Это надёжнее, чем полагаться на
повторную передачу, которая тоже, возможно, не сможет пройти без ошибок.
В данной работе формируется на передающей машине код с
обнаружением ошибок. Это код, в котором к данным добавляется один бит
чётности таким образом, чтобы количество единиц во всём кодовом слове
было чётным.
Анализ кода на приёмной машине на предмет обнаружения ошибок
рассматривается в практической работе № 6.
Задание на практическую работу
По разработанной программе «Формирование кода чётности» вывести на
экран и записать в тетрадь заданные символы, их коды в 10сс, а также в 2сс с
присоединёнными к ним битами чётности. В качестве исходных данных
может быть слово на русском или английском языке.
В тетрадь записать также основные положения из Краткой справки
данной работы, а также основные переменные.
Переменные
s$ заданное слово (англ. или рус.);
ds длина слова s$;
a$ строковая константа для формирования байта;
i
счётчик цикла от 1 до ds;
c(i) код в 10сс i-й буквы слова s$;
р
счётчик – сколько слева нулей необходимо добавить к коду в 2 сс;
b$ строка числа в 2 сс без нулей в старших разрядах;
d
рабочая ячейка (число в 10 сс, для деления его на 2 для получения 2 сс);
b
остаток от деления числа в 10 сс на 2;
c$
d$
ib
строка числа без знака;
байт – строка числа в 2 сс с нулями в старших разрядах;
избыточный байт для формирования кода чётности.
Программа на языке QBasic
'ИСД-08-1. Сидоров Ян
'Формирование кода чётности
INPUT "Введи слово английскими или русскими буквами ",
s$
a$ = "00000000"
PRINT " код код 2сс+";
COLOR 12: PRINT "чётность": COLOR 7
ds = LEN(s$)
DIM c(ds)
FOR i = 1 TO ds
c(i) = ASC(MID$(s$, i, 1))
GOSUB m1
NEXT
END
m1: p = 8: b$ = "": d = c(i) * 2: ib = 0
DO
d = d \ 2
p = p - 1
b = d MOD 2
ib = ib XOR b
c$ = MID$(STR$(b), 2)
b$ = c$ + b$
LOOP WHILE d > 1
d$ = LEFT$(a$, p) + b$
PRINT CHR$(c(i)); c(i); LEFT$(d$, 8);
COLOR 12: PRINT MID$(STR$(ib), 2): COLOR 7
RETURN
Download