
- •1. Системы счисления
- •1.1. Позиционные системы счисления
- •1.2. Преобразование чисел из одной системы счисления
- •2. Двоичная арифметика
- •Проверка
- •3. Представление чисел в эвм
- •3.1. Формы представления чисел в эвм
- •Пример Представление чисел в нормализованной форме.
- •3.2. Целые беззнаковые двоичные числа
- •3.3. Целые знаковые двоичные числа
- •3. 4. Коды представления чисел в эвм
- •3.4.1. Прямой код
- •3.4.2. Обратный код
- •3.4.3. Дополнительный код
- •3.4.4. Прямой, обратный и дополнительный коды целых чисел в любой позиционной системе счисления
- •3.5. Сложение и вычитание чисел в обратном и дополнительном двоичных кодах
- •3.5.1. Сложение чисел в дополнительном коде
- •3.5.2. Сложение чисел в обратном коде
- •3.5.3. Расширение знака
- •3.5.4. Вычитание чисел в дополнительном коде
- •3.5. 5. Вычитание чисел в обратном коде
- •3.6.1. Сложение десятичных чисел в дополнительном коде
- •3.6.2. Сложение десятичных чисел в обратном коде
- •3.6.3. Вычитание десятичных чисел в дополнительном коде
- •3.6.4. Вычитание десятичных чисел в обратном коде
- •4. Двоичные коды
- •4.1. Взвешенные коды
- •4.1.1. Десятичное сложение в коде 8421
- •4.1.2. Десятичное вычитание в коде 8421
- •4.2. Невзвешенные коды
- •Пример. Кодовый набор Грея 1101101011 соответствует двоичному числу 1001001101.
- •Пример. Кодовый набор Грея 10111001 соответствует двоичному числу 11010001.
- •5. Обнаружение и исправление ошибок
- •5.1. Коды с обнаружением ошибок
- •5.2. Коды с исправлением ошибок
- •5.2.1. Основные принципы построения кодов Хэмминга с исправлением ошибок
- •5.2.2. Модификация метода четности-нечетности
- •6. Задачи для самостоятельного решения
- •6.1. Задачи для раздела 1
- •6.2. Задачи для раздела 2
- •6.3. Задачи для раздела 3
- •6.4. Задачи для раздела 4
- •6.5. Задачи для раздела 5
- •Литература
- •3.5. Сложение и вычитание чисел в обратном и дополнительном
5.2.2. Модификация метода четности-нечетности
Исходное сообщение разбивается на группы.
а1 |
а2 |
а3 |
а4 |
а5 |
к1 |
а6 |
а7 |
а8 |
а9 |
а10 |
к2 |
а11 |
а12 |
а13 |
а14 |
а15 |
к3 |
а16 |
а17 |
а18 |
а19 |
а20 |
к4 |
а21 |
а22 |
а23 |
а24 |
а25 |
к 5 |
к6 |
к7 |
к8 |
к9 |
к10 |
|
Контрольные разряды выделяются всем группам по строкам и столбцам. Появляется возможность не только обнаружить, но и исправить ошибку.
Пример. Передается сообщение вида: 8 столбцов, 6 строк. Контрольный столбец –8, контрольная строка –6.
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
2 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
3 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
4 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
5 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
|
Проверка по каждой строке: к1=0, к2=1, к3=0, к4 =0, к 5=0. Проверка по каждому столбцу: к6=0, к7=1, к8=0, к9=0, к10=0, к11=0, к12=0. Ошибка возникла во второй строке и втором слева столбце.
5.2.3. Сочетание кодов Хэмминга+ четности(нечетности)
Добавим контрольный разряд четности к семиразрядному коду Хэмминга для десятичных цифр в двоично-десятичном коде 8421 и построим восьмиразрядный код Хэмминга с проверкой на четность.
Таблица 19
Десятичная цифра |
p1 |
p2 |
m1 |
p3 |
m2 |
m3 |
m4 |
p0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
2 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
3 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
5 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
6 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
7 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
8 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
9 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
Если кодовое расстояние увеличить до 4 путем присоединения контрольного разряда четности к семиразрядному коду Хэмминга, чтобы все 8 разрядов проверялись на четность, то построенный код можно использовать для исправления одиночной ошибки и обнаружения двойной.
Пусть произошли две ошибки. Полная проверка кода на четность будет успешной. Номер позиции, определенный по семи разрядам, укажет на ошибку- двойную(две ошибки).
Пусть произошла одиночная ошибка. Полная проверка кода обнаружит её. Если номер позиции равен 0, то ошибка в последнем контрольном разряде четности. Иное местоположение ошибки определяется по номеру позиции.
Нет ошибки. В этом случае все четыре проверки на четность успешны.
Пример. Исходное сообщение представлено в коде Хэмминга с проверкой на четность.
а)
Номер позиции |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Сообщение |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
|
Полная проверка |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1-я проверка на четность |
0 |
|
1 |
|
1 |
|
1 |
|
1 |
2-я проверка на четность |
|
0 |
1 |
|
|
0 |
1 |
|
0 |
3-я проверка на четность |
|
|
|
1 |
1 |
0 |
1 |
|
1 |
Исправленное сообщение |
|
|
|
|
|
|
|
|
|
Полная проверка на четность успешна (количество единиц четное – 0). Следовательно, ошибка либо двойная, либо её нет. Проверка по Хэммингу дает номер позиции, отличный от 0. Следовательно, в переданном сообщении есть двойная ошибка.
б)
Номер позиции |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Сообщение |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
|
Полная проверка |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1-я проверка на четность |
0 |
|
1 |
|
0 |
|
1 |
|
0 |
2-я проверка на четность |
|
0 |
1 |
|
|
0 |
1 |
|
0 |
3-я проверка на четность |
|
|
|
1 |
0 |
0 |
1 |
|
0 |
Исправленное сообщение |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
Полная проверка на четность неуспешна (количество единиц нечетное – 1). Следовательно, ошибка одиночная. Проверка по Хэммингу дает номер позиции, равный 0. В переданном сообщении одиночная ошибка в восьмом контрольном разряде.
в)
Номер позиции |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
Сообщение |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
Полная проверка |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1-я проверка на четность |
0 |
|
1 |
|
0 |
|
1 |
|
0 |
2-я проверка на четность |
|
0 |
1 |
|
|
0 |
1 |
|
0 |
3-я проверка на четность |
|
|
|
1 |
0 |
0 |
1 |
|
0 |
Исправленное сообщение |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
|
Полная проверка на четность успешна. Следовательно, ошибка либо двойная, либо её нет. Проверка по Хэммингу дает номер позиции, равный 0. В переданном сообщении нет ошибок.
Рис.3. Схема алгоритма исправления одиночной ошибки и обнаружения двойной