Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сборник задач по дисциплине «Информатика». Методические указания к проведению практических занятий по дисциплине «Информатика», для студентов первого

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]