Код Хэмминга позволяет исправить одну ошибку и обнаружить две. Признаком ошибки (или ошибок) служит несовпадение контрольных битов со значением, которые вычислено по полученным битам данных. Например, пусть приняты данные
По битам данных (с номерами 3, 5, 6 и 7) рассчитываем значения контрольных битов, которые получаются при безошибочной передаче:
бит 1 = (бит 3 + бит 5 + бит 7) mod 2 = (1 + 1 + 0) mod 2 = 0
бит 2 = (бит 3 + бит 6 + бит 7) mod 2 = (1 + 1 + 0) mod 2 = 0 ≠ 1
бит 4 = (бит 5 + бит 6 + бит 7) mod 2 = (1 + 1 + 0) mod 2 = 0 ≠ 1
Видим, что полученные значения контрольных битов 2 и 4 не совпадают с вычисленными, поэтому при передаче были ошибки. Если предположить, что была только одна ошибка, то номер ошибочного бита вычисляется как сумма номером несовпавших контрольных битов, в данном примере это 2 + 4 = 6. Таким образом, 6-й бит принят неверно, исправленные данные выглядят так:
Это код Хэмминга для числа 11002 = 12.
Задание: устройство приняло приведенные ниже 7-битовые блоки, в каждом из которых не более одной ошибки. Восстановите правильные данные и запишите в десятичной системе счисления, через запятую, числовую последовательность, которую пытались передать
1101010 0001100 1111000 0110111