Пусть нам надлежит передать двоичную последовательность 10110010. Попробуем защитить ее от действия помех, используя код Хэмминга. После первой четверки информационных битов 1011 необходимо вставить контрольные. Пятый, передаваемый в линию бит получаем, суммируя в соответствии с таблицей второй, третий и четвертый информационные биты:
Таким образом, это будет 0. Шестой бит складывается из суммы первого, третьего и четвертого:
Возникают следующие вопросы: как теперь узнать, произошла при передаче кодовой комбинации по линии ошибка или нет? Если произошла, то в каком разряде? Как эту ошибку исправить?
Предположим, что регенератором приемной станции была зафиксирована такая последовательность: 10010100011110. Очевидно, что в первой комбинации ошибочно принят третий бит, а во второй комбинации - четвертый бит. Но это ясно для нас с вами. На приеме подобный вывод должен быть сделан автоматически, по заранее известному правилу:
В соответствии с ним нужно для каждой принятой 7-разрядной кодовой комбинации подсчитывать контрольное число. Это 3-разрядное двоичное число и укажет сразу на номер бита, который был принят ошибочно. Проверим предлагаемое правило на наших "искаженных" комбинациях. Для первой из них сумма "по модулю 2" четвертого - седьмого битов равна 0, сумма второго, третьего, шестого и седьмого битов даст в результате 1, а сумма первого, третьего, пятого и седьмого битов - тоже 1. Итак, контрольное число имеет вид 011. Но ведь это двоичное представление числа 3! Значит, ошибочно принят третий бит. Его значение нужно заменить на противоположное, т. е. 0 заменить на 1. Если мы подсчитаем контрольное число для второй 7-разрядной комбинации, оно будет равно (проверьте самостоятельно!) 100. Это двоичный код числа 4, и, следовательно, ошибка произошла в четвертом символе. Исправить ее легко, заменив символ на противоположный.
А если ошибочно принят не информационный, а один из контрольных битов? Нетрудно убедиться, что будет обнаружена и эта ошибка. В самом деле, для принятой комбинации 1011000 (ошибка в шестом разряде) двоичное число составит 110, что соответствует десятичному числу 6. Надо ли говорить о том, что в системах передачи цифровой информации все операции - образования контрольных битов на передающей станции, вычисления контрольных чисел и исправления соответствующих битов на приемной станции - выполняются устройствами, собранными из микросхем, таких как сумматоры "по модулю 2", счетчики, дешифраторы и т. п.
До сих пор речь шла о двоичном кодировании, т. е. о представлении цифровой информации числами двоичной системы счисления. Но можно применять системы счисления и с другими основаниями. Например, в ИКМ-аппаратуре успешно "работает" троичная система счисления, в которой используются три цифры: -1, 0 и +1. Цифре +1 соответствует импульс положительной полярности, цифре 0, как и ранее, - отсутствие импульса и, наконец, цифра -1 представляется импульсом отрицательной полярности. Поскольку цифровой поток первоначально состоял из чередования двоичных символов 0 и 1, то осуществляют переход от двоичной системы счисления к троичной. В зависимости от правила перехода получают различные коды.
Первый троичный код был изобретен в 1952 г. инженерами американской компании "Bell". Преобразование двоичных чисел в троичные происходило в нем по довольно простому алгоритму: 0 оставался без изменения, а 1 заменялась поочередно то на +1,то на -1. Например, цифровая двоичная последовательность 1100111001 приобретала после преобразования вид: +1 -100 +1 -1 +100 -1. Заметьте, данный алгоритм неудовлетворяет правилам перехода из двоичной системы счисления в троичную. Поэтому такой код называют квазитроичным ("квази" означает: как бы, почти). У него есть еще одно название - код с чередованием полярности импульсов (ЧПИ).
Достоинством кода оказалось то, что наличие в нем избыточности, заложенной не в добавочных символах, как это наблюдалось в двоичных кодах, а в большем основании кода, не требует снижения скорости передачи цифрового потока: какой она была, такой и осталась. В то же время структура кода позволяет обнаруживать ошибки и подсчитывать их вероятность. Действительно, допустим, в троичной последовательности, приведенной выше, был неверно принят четвертый символ: вместо 0 восстановлена 1. Таким образом, на выходе регенератора имеется последовательность +1 -10 +1 +1 -1 +100 -1. Вы обратили внимание, что нарушилось правило чередования полярностей импульсов? Ведь в соответствии с принятым алгоритмом формирования кода в нем не могут следовать подряд два импульса одной полярности. Значит, для определения вероятности ошибок на приемной станции следует подсчитать количество нарушений за время передачи чередования полярностей.
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии