
- •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. Коды с исправлением ошибок
Для того, чтобы код исправлял ошибки, необходимо увеличить его минимальное кодовое расстояние.
Пример. Трёхразрядный код состоит из двух допустимых комбинаций 000 и 111. В случае одиночной ошибки для первого кодового набора возможные кодовые наборы 001,010,100, для второго – 011,101,110. У каждого допустимого кодового набора “свои” недопустимые кодовые наборы. Его минимальное кодовое расстояние dmin равно 3.
Если ошибка одиночная, то удается определить её местоположение и исправить её, так как каждая ошибка приводит к недопустимому кодовому набору, соответствующему только одному из допустимых кодовых наборов.
Определение. Код называется кодом с исправлением ошибок, если всегда из неправильного кодового набора можно получить правильный кодовый набор (например, коды Хэмминга).
Если dmin = 3, то любая одиночная ошибка переводит допустимый кодовый набор в недопустимый, находящийся на расстоянии, равном 1, от исходного кодового набора, и на расстоянии, равном 2, от любого другого допустимого кодового набора. Поэтому в коде с dmin = 3 можно исправить любую одиночную ошибку или обнаружить любую двойную ошибку. Если dmin = 4, то можно исправить любую одиночную ошибку и обнаружить любую двойную или обнаружить тройную ошибку.
Основное свойство кода – возможность обнаруживать и выделять местоположение ошибочных разрядов. Когда местоположение ошибки определено, то осуществляют замену ошибочного разряда на его дополнение.
5.2.1. Основные принципы построения кодов Хэмминга с исправлением ошибок
-
К каждому набору из m информационных разрядов (сообщению) присоединяются k разрядов p1, p2, …pk проверки на чётность.
-
Каждому из (m+k) присваивается десятичное значение позиции, начиная со значения 1 для старшего разряда и кончая значением (m+k) для младшего разряда.
-
Производится k проверок на чётность числа единиц в выбранных разрядах каждого кодового набора. Результат каждой проверки на чётность записывается как 1 или 0 в зависимости от того, обнаружена ошибка или нет.
-
По результатам проверок строится двоичное число ck … c2c1, равное десятичному значению, присвоенному местоположению ошибочного разряда, если произошла ошибка, и нулю при её отсутствии. Это число называется номером позиции ошибочного разряда.
Число разрядов k должно быть достаточно большим для указания положения любой из (m+k) возможных одиночных ошибок. Так как m+k+1-количество возможных событий, 2k – максимальное количество кодовых комбинаций, то k должно удовлетворять неравенству 2k m+k+1.
Определим максимальное значение m для заданного количества k.Обозначим количество разрядов в коде n= m+k.
Таблица 15
n |
1 |
2…3 |
4…7 |
8...15 |
16...31 |
32...63 |
m |
0 |
0...1 |
1…4 |
4…11 |
11…26 |
26…57 |
k |
1 |
2...2 |
3…3 |
4…4 |
5…5 |
6…6 |
Определим теперь позиции, которые необходимо проверить в каждой из k проверок. Если в кодовой комбинации ошибок нет, то контрольное число двоичное ck… c2c1 содержит только 0. Если в первом разряде контрольного числа стоит 1, то в результате первой проверки обнаружена ошибка.
Таблица 16
№ позиции возможной ошибки |
Двоичный эквивалент |
0 |
00000 |
1 |
00001 |
2 |
00010 |
3 |
00011 |
4 |
00100 |
5 |
00101 |
6 |
00110 |
7 |
00111 |
8 |
01000 |
9 |
01001 |
Окончание таблицы 16
№ позиции возможной ошибки |
Двоичный эквивалент |
10 |
01010 |
11 |
01011 |
12 |
01100 |
13 |
01101 |
14 |
01110 |
15 |
01111 |
16 |
10000 |
17 |
10001 |
18 |
10010 |
… |
… |
Из табл. 16 двоичных эквивалентов для номера позиции возможной ошибки видно, что в первую проверяемую группу разрядов входят 1,3,5,7,9, 11,13,15, 17 и т.д., во вторую – 2,3,6,7,10,11,14,15,18 и т.д.
Таблица 17
Проверка |
Проверяемые разряды |
1 |
1,3,5,7,9, 11,13,15, 17 … |
2 |
2,3,6,7,10,11,14,15,18 … |
3 |
4,5,6,7, 12,13,14, 15 … |
4 |
8,9,10,11, 12,13,14, 15 … |
… |
… |
Разряды, номера которых кратны степеням 2: 1,2,4,8,16…, встречаются в каждой проверяемой группе один раз. Удобно использовать эти разряды в качестве контрольных, а остальные – информационных разрядов.
Пример. Пусть исходное сообщение 00111. Количество информационных разрядов m=5. Количество контрольных разрядов k=4. Длина кода Хэмминга равна 9. Построим код Хэмминга для исходного сообщения.
Номер позиции |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Исходное сообщение |
|
|
0 |
|
0 |
1 |
1 |
|
1 |
1-я контрольная группа |
0 |
|
0 |
|
0 |
|
1 |
|
1 |
2-я контрольная группа |
|
0 |
0 |
|
|
1 |
1 |
|
|
3-я контрольная группа |
|
|
|
0 |
0 |
1 |
1 |
|
|
4-я контрольная группа |
|
|
|
|
|
|
|
1 |
1 |
Код Хэмминга |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
Код Хэмминга для десятичных цифр в двоично-десятичном коде 8421 приведен в табл. 18.
Таблица 18
Десятичная цифра |
p1 |
p2 |
m1 |
p3 |
m2 |
m3 |
m4 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
2 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
3 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
5 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
6 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
7 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
8 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
9 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
Рассмотрим способ выявления положения ошибки и её исправления.
Пример. Пусть передана последовательность 1000011. Из-за ошибки в третьем разряде принято сообщение 1010011. Положение ошибки можно определить, выполняя 3 проверки на четность.
Номер позиции |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
ci |
Сообщение |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
|
1-я проверка на четность |
1 |
|
1 |
|
0 |
|
1 |
1 |
2-я проверка на четность |
|
0 |
1 |
|
|
1 |
1 |
1 |
3-я проверка на четность |
|
|
|
0 |
0 |
1 |
1 |
0 |
Исправленное сообщение |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
|
Полученный номер позиции c3c2c1= 011, т.е. ошибка в третьем разряде.