Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборник задач по дисциплине «Информатика». Методические указания к проведению практических занятий по дисциплине «Информатика», для студентов первого
.pdf
n
bbb ...
21
m
kkk ...
21
n
bbb ...
21
k
0...,0
1...,1
21
21
n
n
bbbесли
bbbесли
kbbbn...
21
Практическая работа № 7
«Помехоустойчивый код Хэмминга»
1. Цель работы
Получить представление о методах помехоустойчивого кодирования.
2. Связь с другими темами практических работ
Данная практическая работа опирается на предыдущие работы и совместно с последующими работами позволяет понять принципы кодирования информации.
3. Теоретические сведения и расчѐтные формулы
При работе устройств вычислительной техники и телекоммуникационной аппаратуры
возможно появление ошибок в обрабатываемых данных. Причинами сбоев могут быть мощные электромагнитные помехи, малый уровень принимаемого сигнала (например, от космического аппарата, находящегося на комете), резкое изменение напряжения питания, старение
радиоэлементов, ненадѐжный контакт разъѐмов, радиоактивное излучение естественных и
искусственных источников и т.п. Сбои проявляются в виде случайного изменения одного
или нескольких битов машинного слова (вместо единицы в отдельных разрядах передаѐтся
ноль или наоборот).
Автоматическое обнаружение и исправление ошибок сопровождается введением избыточности в передаваемые или хранимые данные. Для этих целей разработаны специальные
коды, в которые помимо информационных битов
дополнительно вводят контрольные
(проверочные) биты
. Контрольные биты позволяют проверять целостность (неиска-
жѐнность) информационных битов машинного слова, а наиболее сложные коды могут не
только обнаружить, но и исправить неверно принятые биты.
Разработанные помехоустойчивые коды позволяют решать разные задачи: обнаружить
одиночную ошибку, обнаружить и исправить единственную ошибку, обнаружить и исправить несколько ошибок. Первые коды называются обнаруживающими, а остальные – кор-
ректирующими кодами.
Простейший код, предназначенный для обнаружения одной ошибки (точнее – для обнаружения нечѐтного числа ошибок), основан на добавлении к информационным битам одного контрольного бита. При этом контрольный бит должен быть таким, чтобы суммарное
число единиц в образованном машинном слове было чѐтным. Добавляемый бит называется
битом паритета (чѐтности).
Проверочный бит k для n-битного двоичного слова
вычисляется по формуле:
В результате такого преобразования формируется (n+1) – битное слово
, число
единиц в котором будет чѐтное.
Рассмотрим пример.
Пример 1.
Пусть дан байт 10111100.
Решение.
Число информационных единиц в этом байте нечѐтное, поэтому бит паритета нужно
установить равным единице. В результате этого получается машинное слово 101111001.
Рассмотрим пример нахождения искажѐнного бита с помощью кода Хэмминга. Места
расположения информационных битов (ИБ) и контрольных битов (КБ) в передаваемых данных указаны в следующей таблице. В верхней строке таблицы записан порядковый номер
41

Раз.
12
11
10 9 8 7 6 5 4 3 2
1
ИБ
8
b
7
b
6
b
5
b
4
b
3
b
2
b
1
b
КБ
8
k
4
k
2
k
1
k
121423485678
kkbkbbbkbbbb
Разряд
12
11
10 9 8 7 6 5 4 3 2
1
Слово
8
b
7
b
6
b
5
b
8
k
4
b
3
b
2
b
4
k
1
b
2
k
1
k
ИБ 1 0 0 0 1 1 0 1
КБ 0 1 0 0
;
75421
`
1
bbbbbk
;
76431
`
2
bbbbbk
;
8432
`
4
bbbbk
.
8765
`
8
bbbbk
;000101
`
1
k
;100111
`
2
k
;11110
`
4
k
.11000
`
8
k
.;;;
8
`
84
`
42
`
21
`
1
kkkkkkkk
1248
ssssS
.;;;
8
`
884
`
442
`
221
`
11
kkskkskkskks
.101;011;101;000
8421
ssss
каждого бита в машинном слове.
Форма записи машинного слова, приведѐнная в предыдущей таблице, выбрана такой с
целью повышения наглядности (из методических соображений). Фактически данные представляют единым двенадцатибитным машинным словом:
.
Пример 2.
Предположим, что в процессе передачи некоторых данных произошло искажение одного информационного бита и на приѐме получены указанные в следующей таблице данные.
Требуется найти и исправить искажѐнный информационный бит.
Решение.
Вычислим значения контрольных битов на приѐме. Расчѐт производится по формулам
[7]:
Используя предыдущие формулы и исходные данные, получим значения контрольных
битов на приѐме:
Расчѐты показывают, что контрольные биты, сформированные на передающей и приѐмной сторонах, различаются:
Различие контрольных битов, сформированных на передающей и приѐмной сторонах,
говорит о том, что в процессе передачи произошло искажение машинного слова. Теперь необходимо определить, какой именно бит был принят неверно.
Для определения неверно принятого бита требуется вычислить так называемый син-
дром
, где
Используя результаты расчѐтов и исходные данные, можно определить четыре бита син-
дрома:
Перевод синдрома S = 10102 из двоичной системы счисления в десятичную СС даѐт
значение S = 10
Десятичное число 10 говорит о том, что десятый разряд принятых данных
10.
(b6) искажѐн, и этот бит нужно исправить (проинвертировать). Таким образом, после коррек-
тировки принятые данные будут иметь вид, показанный в следующей таблице. Напомним,
42

Разряд
12
11
10
9 8 7 6 5 4 3 2 1
Слово
8
b
7
b
6
b
5
b
8
k
4
b
3
b
2
b
4
k
1
b
2
k
1
k
ИБ
1
0 1 0 1 1 0 1
КБ
0 1 0
0
что счѐт разрядов ведѐтся справа налево.
43

Зада-
ча.
8
b
7
b
6
b
5
b
8
k
4
b
3
b
2
b
4
k
1
b
2
k
1
k
1 1 0 0 1 1 0 0 1 0 0 1 1 2 1 0 0 0 0 0 1 0 0 1 1 1 3 1 1 1 0 1 0 1 1 0 0 1 1 4 1 1 0 0 0 1 1 0 0 1 1 0 5 1 1 0 1 0 0 0 1 0 1 0 1 6 1 1 1 0 0 1 0 0 0 1 1 1 7 1 0 0 1 1 0 1 0 0 0 0 0 8 0 0 0 0 1 0 1 1 1 1 0 0 9 1 1 1 0 1 0 0 0 1 0 1 0
10
1 0 1 0 0 0 0 0 0 1 0 0 11
1 0 1 0 0 1 1 1 1 0 0 0 12
1 0 0 0 0 0 1 1 1 0 0 0 13
1 1 0 0 0 1 1 0 1 0 1 0 14
1 1 0 0 1 0 0 1 0 0 0 0 15
1 0 1 0 1 1 0 0 0 0 1 0 16
0 0 1 0 0 1 1 0 1 0 1
1
4. Задания для выполнения практической работы
«Помехоустойчивый код Хэмминга»
4.1. Определить искажѐнный разряд в предложенной двоичной последовательно-
сти.
Таблица 7.1
Домашнее задание
1. Преобразовать десятичный номер зачѐтки в двоичное число и сформировать бит па-
ритета.
2. Последнюю цифру зачѐтки перевести в двоичное число. Сформировать контрольные
биты с помощью кода Хэмминга.
44

)))(mod()(()()( xgxuxxuxxv
knkn
kn
x
.1)(
4678
xxxxxg
1)(
346
xxxxxu
Номера
разрядов
6 5 4 3 2 1 0
Слагаемые
6
x
5
x
4
x
3
x
2
x
x
1
2
x
5
x
8
x
8715kn
)(xux
kn
891112143468
)1( xxxxxxxxxx
8
x
Практическая работа № 8
«Помехоустойчивый код БЧХ»
1. Цель работы
Получить представление о методах помехоустойчивого кодирования.
2. Связь с другими темами практических работ
Данная практическая работа опирается на предыдущие работы и позволяет понять
принципы кодирования информации.
3. Теоретические сведения и расчѐтные формулы
Устранить две ошибки (и более) в принятых данных позволяют циклические коды Боуза-Чоудхури-Хоквингема (БЧХ).
Циклический код БЧХ v(x) на передающей стороне формируется следующим образом
[8]:
, (1)
где x – фиктивная переменная; u(x) - кодируемая последовательность данных (информационные биты, сообщение); n – число бит в передаваемых данных (суммарное число информационных и контрольных бит); k - число информационных бит в машинном слове; mod
- операция вычисления остатка от деления; + - операция конкатенации (соединения, склеивания) информационных и контрольных битов; g(x) – порождающий полином.
В приведѐнном выше выражении первое слагаемое описывает информационные биты,
сдвинутые влево на
разрядов. Второе слагаемое описывает контрольные биты.
Выберем одну из разновидностей БЧХ с кодовой последовательностью длиной n = 15.
Данный код формируется с помощью порождающего полинома восьмой степени (r = 8):
Число информационных разрядов в таком коде k = n – r = 15 – 8 = 7. Код позволяет исправить две ошибки (s = 2).
Рассмотрим порядок построения циклического кода БЧХ на передающей стороне.
Дано 7 информационных бит 1011011. Запишем информационные биты в виде полинома:
. (2)
Порядок построения полинома u(x) иллюстрирует следующая таблица:
Таблицу нужно трактовать следующим образом: если в соответствующем разряде данных информационный бит равен единице, то в полином нужно включить нижерасположенный член ряда. Этим объясняется отсутствие в полиноме (2) слагаемых
и
.
Для нахождения первого слагаемого в выражении (1) нужно полином (2) умножить на
(заметим, что число контрольных битов
):
. (3)
Смысл предыдущей операции очень прост: информационные разряды за счѐт умножения на
смещаются влево на восемь позиций (в сторону старших разрядов). Это сделано для
того, чтобы разделить информационные и контрольные биты (информационные разряды бу-
45

)1mod()(
467889111214
xxxxxxxxx
1
2356
xxxx
1)(
235689111214
xxxxxxxxxxv
)(xv
)(xf
)(xf
)(xf
)(xg
sw
)(xf
sw
1)(
235689121314
xxxxxxxxxxf
дут располагаться в передаваемых данных слева, а контрольные биты – справа).
Для нахождения контрольных битов нужно найти остаток от деления полинома (3) на
порождающий полином g(x):
. (4)
Именно контрольные биты (4) позволяют на приѐмной стороне определить, есть ли искажения и при необходимости восстановить неверно принятые биты. Сформированный в соответствии с (1) помехоустойчивый код описывается полиномом:
. (5)
Чтобы проверить верно ли сформирован полином (5), достаточно его разделить на порождающий полином g(x). Если остаток от деления равен нулю, то код сформирован правильно. В соответствии с полиномом (5) в линию нужно передать двоичный код:
101101101101101. (6)
Несложно заметить, что первые семь бит сформированного кода полностью совпадают
с информационными битами (с сообщением). Следующие восемь бит являются контрольными. Соотношение между числом информационных и контрольных битов наглядно показывает, почему такие коды называют избыточными.
В процесс передачи по каналу связи (или записи в память цифрового устройства)
сформированный код БЧХ
рование полученных данных
1) выполняется деление принятой последовательности
может быть искажѐн и на приѐм поступит код
происходит в соответствии со следующим алгоритмом:
на порождающий полином
. Декоди-
;
2) вычисляется вес остатка w (количество единиц в остатке);
3) если
циклический сдвиг влево на один разряд принятой последовательности
, где s – число ошибок, исправляемых данным кодом, то производится
и вновь выпол-
няется шаг 1. Математически операция сдвига влево эквивалентна операции умножения полинома на х. Если получается фиктивная переменная х в степени 15, то в младшем разряде
полинома нужно записать 1;
4) если
, то производится суммирование полученной последовательности с ос-
татком;
5) производится циклический сдвиг полученной последовательности вправо на количе-
ство разрядов, равное числу сдвигов влево, выполненное в процессе декодирования приня-
той последовательности (в процессе деления).
При описании алгоритма декодирования использован термин
«циклический сдвиг». Сдвиг – это изменение позиций битов в ма-
шинном слове на одну и ту же величину. Следующий рисунок иллюстрирует порядок перемещения битов при циклических сдвигах
влево и вправо.
На рисунке приняты обозначения: LSB – младший значащий
разряд; MSB – старший значащий разряд.
Рассмотрим процесс декодирования на примере кода, сформи-
рованного ранее.
Пример 1.
Предположим, что в данных (6) произошло искажение разря-
дов 13 и 11. В результате на приѐм поступило двоичное число
111001101101101.
Решение.
Запишем принятое двоичное число в виде полинома:
.
Выполним декодирование. Результаты расчѐтов на каждой итерации поместим в таблицу. Так как данный код позволяет исправлять две ошибки (s = 2), расчѐты следует вести до
46

Ит.
Полиномы
Вес
w
1
)(1xf
1
235689121314
xxxxxxxxx
)(1xC
26
xx
)(1xP
1
356
xxx
4
2
)(2xf
1
34679101314
xxxxxxxxx
)(2xC
1
346
xxx
)(2xP
xxxx
467
4
3
)(3xf
1
24578101114
xxxxxxxxx
)(3xC
xxx
56
)(3xP
1
2456
xxxx
5
4
)(4xf
1
2356891112
xxxxxxxxx
)(4xC
1
24
xx
)(4xP
xxxxx
3567
5
5
)(5xf
xxxxxxxxxx
234679101213
)(5xC
1
35
xxx
)(5xP
1
2
x
2
)(xC
i
)(xf
i
)(xg
)(xP
i
)(xf
i
)(xf
i
1
14
x
)(5xf
0
14
x
.1
1
)()()(
34679101213
2234679101213
55
xxxxxxxxx
xxxxxxxxxxx
xPxfxR
тех пор, пока не будет выполнено условие w ≤ 2.
В таблице использованы такие обозначения:
- частное от деления
- остаток от деления
на порождающий полином g(x) на i – той итерации.
на порождающий полином
на i – той итерации;
На пятой итерации вес остатка достиг значения, при котором следует прекратить дальнейшие расчѐты (w = 2). За пять проведѐнных итераций было выполнено четыре циклических сдвига влево.
Выполненные операции позволяют наглядно понять, почему этот код называю циклическим. При выполнении сдвига влево крайний левый разряд считался соседним с крайним
правым разрядом. По этой причине на итерациях 2, 3, 4 последними слагаемыми полиномов
являются единицы. Это объясняется тем, что в этих случаях
в младший разряд последовательности. На пятой итерации полином
гаемого, равного 1. Это происходит потому, что на предыдущей итерации
и единица переходит
не содержит сла-
.
В соответствии с алгоритмом декодирования теперь следует перейти к шагу 4 и найти
сумму полинома и остатка на последней итерации:
(7)
Полученный полином (7) преобразуем в двоичное число:
R(x) = 011011011011011. (8)
В соответствии с шагом 5 алгоритма декодированную последовательность (8) нужно
циклически сдвинуть вправо на четыре разряда. Этапы сдвига показаны в таблице.
47

Номера сдви-
гов
Числа
R(x)
011011011011011
1 сдвиг
101101101101101
2 сдвиг
110110110110110
3 сдвиг
011011011011011
4 сдвиг
101101101101101
Первые семь битов двоичного числа, полученного после четвѐртого циклического
сдвига вправо, являются информационными битами, в которых были исправлены две ошибки.
Таким образом, в результате декодирования получено число 1011011, которое точно
совпадает с переданным числом.
Этот пример наглядно демонстрирует возможность автоматического исправления возникших ошибок.
Заметим, что операцию циклического сдвига вправо можно осуществить с помощью
полиномов путѐм деления на х.
48

.1)(
4678
xxxxxg
Задача
Данные
Задача
Данные
1
1100001
9
1101001
2
1100010
10
1101010
3
1100011
11
1101011
4
1100100
12
1101100
5
1100101
13
1101101
6
1100110
14
1101110
7
1100111
15
1101111
8
1101000
16
1110100
4. Задания для выполнения практической работы
«Помехоустойчивый код БЧХ»
4.1. Сформировать помехоустойчивый циклический код БЧХ, у которого число инфор-
мационных разрядов k = 7, число контрольных разрядов r = 8, а порождающий полином
Таблица 8.1
Домашнее задание
Перевести две последние цифры зачѐтки в двоично-десятичный код и отбросить младший бит. К полученному числу поразрядно прибавить (по правилу дизъюнкции) двоичное
число 1001010. С помощью получившихся семи бит сформировать циклический код БЧХ.
49

Р 1 0 0 1 1 0 0 1 G 1 1 0 0 1 1 1 0 C 0 1 0 1 0 1 1 1
C 0 1 0 1 0 1 1 1 G 1 1 0 0 1 1 1 0 Р 1 0 0 1 1 0 0 1
Практическая работа № 9
«Шифрование методом гаммирования»
1. Цель работы
Получить представление о криптографических методах защиты информации с помощью симметричного ключа.
2. Связь с другими темами практических работ
Данная практическая работа опирается на практические работы «Системы счисления»,
«Логические основы работы ЭВМ» и позволяет получить представление о формировании
криптограмм.
3. Теоретические сведения и расчѐтные формулы
При шифровании методом гаммирования вначале открытый текст шифруют методом
замены, преобразуя каждую букву в число. Затем к каждому числу прибавляют секретную
гамму (псевдослучайную числовую последовательность). Технически добавление гаммы к
открытому тексту в криптографических системах осуществляется поразрядно (поточный
шифр). Процедуру добавления гаммы удобно реализовать с помощью двоичных чисел. При
этом на каждый бит открытого текста накладывается бит секретной гаммы.
Генератор гаммы выдаѐт последовательность битов: 1, 2, 3,…, n. Этот поток битов и
поток битов открытого текста p1, p2, p3,…, pn подвергаются поразрядно логической операции
Исключающее. В результате получается поток битов криптограммы:
ci = pi i.
При расшифровании на приѐмной стороне операция Исключающее ИЛИ выполняется
над битами поступившей криптограммы и тем же самым потоком гаммы:
pi = ci i.
Благодаря особенностям логической операции Исключающее ИЛИ на приѐмной стороне
операция вычитания заменяется данной логической операцией. Сказанное иллюстрируется
примером.
Предположим, что открытый текст Р = 10011001, а гамма G = 11001110. В результате
шифрования криптограмма С будет иметь следующий вид:
На приѐмной стороне повторно выполняется логическая операция Исключающее ИЛИ:
Из этих таблиц видно, что переданный и принятый байты одинаковые.
В ЭВМ преобразование открытого текста в числа происходит естественным путѐм, так
как каждый символ кодируется двоичным числом. Вид этого преобразования зависит от используемой операционной системы. Для определѐнности будем считать, что сообщение в
ЭВМ кодируется с помощью кодовой таблицы CP-1251 (см. Приложение). Итак, будем считать, что секретная гамма добавляется к открытому тексту по правилу логической операции
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
