В общем виде корректирующие возможности кодов с могут быть охарактеризованы выражением
d = r + s + 1,
где: r — число обнаруживаемых ошибок; s - число исправляемых ошибок.
Например, при d = 4 код может обнаружить две и исправить одну ошибку (r = 2, s = l) или же обнаружить три ошибки ( r = 3, s = 0).
Синтез линейных кодов с заданными свойствами обычно осуществляется кодирующими устройствами (рис. 16, а), которые сравнительно просты, так как содержат только ячейки регистра сдвига () и сумматор по модулю 2. К сумматору подключаются выходы тех ячеек регистра, для которых = 1 в соответствии с выбранными линейными формами кода. От вида кода может изменяться не только число связей, но и число сумматоров.
Рассмотрим для примера структуру кодирующего устройства для образования линейною кода c d=3 (обычно называемого кодом Хэмминга) при трех информационных и трех контрольных символах (рис. 16, б). В ячейки 1-3 регистра памяти вводятся исходные информационные символы . Далее проводится сдвиг всех символов на один такт, в результате чего в ячейку 3 записывается сумма по модулю 2 первого и второго информационных символов. После второго сдвига в ячейке 1 будет , в ячейке 2-, а в ячейке 3-. Третий такт сдвига приводит к тому, что в ячейках регистра окажется комбинация проверочных символов к исходной комбинации кода.
Рис. 16. Структурные схемы кодирующих устройств для линейных кодов.
При использовании циклического сдвига и выборе линейных форм в соответствии с так называемыми порождающими многочленами образуются циклические коды, в которых каждая комбинация представляет собой блок из информационных и контрольных символов на определенных местах.
Циклические коды позволяют обнаруживать и исправлять любые ошибки в зависимости от выбранного порождающего (образующего, генераторного) полинома. Образуют циклические коды с теми или иными корректирующими свойствами, беря комбинации двоичного кода на все сочетания и умножая их на образующий многочлен. Для систематизации таких кодов с целью закрепления мест информационных и контрольных символов используют дополнительные операции умножения и деления многочленов.
В системах телемеханики на железнодорожном транспорте и помехозащищенных кодов нашли широкое применение коды на одно сочетание (d = 2, r = 1, х = 0). Такие коды, кроме одиночных ошибок, обнаруживают также однотипные ошибки более высокой кратности.
Поскольку в таких кодах контролируется постоянное число единиц и нулей в комбинации, то их часто называют кодами с постоянным весом.
Общее число разрешенных комбинаций в таком коде зависит от числа сочетаний
или
где: п - число разрядов в комбинации; т - число единиц в комбинации.
Разновидностью кода с постоянным весом является широко используемый распределительный код (рис. 17), имеющий вес, равный единице (в любой комбинации длиной п содержится только одна 1).