- •Вычитание двоичных чисел
- •Вычитание в дополнительном коде
- •Отрицательные двоичные числа
- •Сложение в bcd-формате
- •Вычитание в bcd-формате
- •Другие тетрадные системы счисления
- •Код Айкена
- •Код Грея
- •Перевод двоичных чисел в шестнадцатеричную систему счисления
- •Преобразование восьмеричных чисел
- •Дополнительный двоичный код
- •Код Хемминга
Дополнительный двоичный код
Лучшим примером избыточного кодирования для первого знакомства является расширенный двоичный код. На рис. 8.29 показан уже рассмотренный двоично-десятичный код. Он содержит дополнительный разряд, дополнительный 5-й бит. Столбец 5-го бита обозначен на рис. 8.29 как Е.
5-ым битом двоично-десятичный код дополняется на «четность». Это значит, что он дополняется таким образом, чтобы количество битов, имеющих значение 1, было четным.
Для десятичной цифры 0 дополнение не требуется. Десятичная цифра 1 записывается как 0001. Количество битов, которые имеют значение 1, равно 1, т. е. нечетно. Таким образом, 5-й бит получает значение 1. В десятичной цифре 2 (0010) также только один бит равен 1. Следовательно, Е получает значение 1. В десятичной цифре 3 (0011) два бита имеют значение 1. Количество битов, равных 1, является четным. Е получает значение 0 и т. д.
Каждая десятичная цифра представляется 5-битовой кодовой комбинацией. 5-й бит является дополнительной информацией, т. е. избыточным. Он называется контрольным разрядом или битом.
Каждая 5-битовая кодовая комбинация проверяется особенной схемой, так называемым контролером четности, на четность единиц (рис. 8.30). Если комбинация четная, то 2— 0. Если нечетная, то Z = 1. При Z= 1 появляется сообщение об ошибке.
Если при передаче данных ошибочно вместо 0 передан 1 или вместо 1 передан 0, то выводится сообщение об ошибке. Определяется только то, что переданная десятичная цифра ошибочна. Неизвестно, какая она должна быть на самом деле. Значит, она не может быть исправлена.
Если в 5-битовой кодовой комбинации два бита ошибочны, то сообщение об ошибке не выдается, так как число единичных битов снова четное. Такие ошибки не распознаются в расширенном двоичном коде.
Вероятность возникновения такой ошибки очень мала. Если она все же возникнет, то скорее всего в данном сеансе связи имеют место много распознаваемых ошибок с одним неверным битом, и будет выведено сообщение об ошибке в передаче данных.
Код «2 из 5»
Кроме расширенного двоичного кода существует множество 5-битовых кодов, из которых так называемые коды «2 из 5» имеют особенное значение. В этом коде распознавание ошибки происходит так же, как и при двоичном расширенном коде, при помощи проверки четности.
На рис. 8.31 показаны кодировочные таблицы для лексикографического кода, кода Волкинга, кода 7-4-2-1-0 и кода 8-4-2-1-0.
Лексикографический код и код Волкинга не различают «вес» двоичных разрядов. В 7-4-2-1-0-коде двоичным разрядам присвоены веса 7, 4, 2, 1 и 0. Вес не имеет значения для десятичной цифры 0, т. е. для первой строки таблицы кода.
В 8-4-2-1-0-коде двоичным разрядам присвоены веса 8, 4, 2, 1 и 0. Это различие действует ограниченно, т. е. недействительно для десятичных цифр 0 и 7.
Кроме кодовых таблиц кода с 0 и 1 также распространены так называемые таблицы перевода. В таблицах перевода каждая 1 обозначена заштрихованным полем, а каждый 0 — пустым (рис. 8.32). Это представление очень наглядно.
Код «3 из 5»
Из 5-битовых комбинаций также можно построить код 3 из 5. Каждая 5- битовая комбинация содержит три состояния 1 и два 0. Часто используется код Лоренца и шифровальный код номер 3. Таблицы перевода представлены на рис. 8.33.
Для распознавания ошибки проводится проверка на нечетность. 5-битовая комбинация безошибочна только при условии, что три ее бита имеют состояние 1 и два бита состояние 0. Если это не так, то контролер нечетности на выходе показывает состояние 1 и выдает сообщение об ошибке (рис. 8.34).
Коды «3 из 5» используются прежде всего для гарантированной передачи чисел на большие расстояния.
Код «2 из 7»
Коды «2 из 7» состоят из 7-битовых комбинаций. 7-битовые комбинации также называются 7-битовым словом. Каждая десятичная цифра представляется 7 битами. Получаемая при этом избыточность больше, чем при представлении цифры только 5 битами.
Из 7 битов 2 бита всегда имеют состояние 1 и 5 битов состояние 0. Два часто применяемые кода «2 из 7» показаны на рис. 8.35. Это двоично-пяте- ричный код и отраженный двоично-пятеричный код. Биты 6 и 7 образуют код «1 из 2». Биты номер 5, 4, 3, 2 и 0 образуют код 1 из 5. Такая структура кода позволяет относительно простую обработку 7-битового слова. Отраженный двоично-пятеричный код получается простым образованием дополнения. Дополнение образуется путем замены 1 на 0 в битах номер 6 и 7.
Коды, исправляющие ошибки
Принцип действия
Прежде чем ошибка может быть исправлена, она должна быть обнаружена.
Код, исправляющий ошибки, также является кодом, распознающим ошибки. |
По сравнению с кодом, распознающим ошибки, код с исправлением ошибок обладает большей избыточностью. Для передачи одного знака требуется на несколько бит больше. Десятичная цифра представляется, например, 7 битами, а не как в коде, распознающим ошибки, 5 битами.
Большая избыточность позволяет выявить ошибочный бит. Если известен ошибочный бит, то самостоятельная коррекция относительно проста. Если ошибочный бит содержит 1, то правильное значение 0. Если ошибочный бит содержит 0, то правильное значение 1. То есть ошибочный бит должен быть инвертирован.
Код с исправлением ошибок производит самостоятельную коррекцию ошибочного бита. |
Сообщение об ошибке может выдаваться независимо от самокоррек- ции. Во многих случаях желательна регистрация выявленной ошибки.
В основном коды с исправлением ошибок могут исправлять только одну ошибку в слове. Если в слове ошибочны два бита, то в большинстве случаев выдается сообщение только об одной ошибке. То есть самостоятельное исправление ошибки не произойдет. Вероятность того, что в слове будут одновременно ошибочны два бита, чрезвычайно мала. Если, тем не менее, такая ошибка встретилась, то после сообщения об ошибке нужно остановить передачу данных и устранить ее причину.
В настоящее время разработаны коды, которые могут исправлять два и больше битов в слове. Но им нужно еще больше битов для передачи одного слова, и они так сложно устроены, что их применение экономически нецелесообразно.