Декодирование и исправление ошибки по Хэммингу
Переданная по информационному каналу в приемник битовая последовательность делится на блоки по n = 2r - 1 бит — получаются блоки кода. С каждым таким блоком выполняется операция
ci = (bi)T×M,
здесь (bi)T — строка (вместо столбца) расширенного кода. Пример приведен на рис. 20. Причем здесь значения контрольных разрядов участвуют в вычислении суммы.
Если все биты ci равны нулю, то ошибок нет и коррекция не нужна, см. рис. 20.
Если хотя бы один бит ci не равен нулю (см. рис. 21), то была ошибка. Значение ci преобразуют из битового представления в десятичное число i и бит блока кода с номером i — ошибочный бит. Для исправления значение бита инвертируют: заменяют ноль на единицу, а единицу на ноль. В результате получаем правильное значение блока кода.
Проверка на ошибки — нет ошибок
Рис. 20.
В заключение, контрольные разряды удаляются из блока и получается блок исходного кода. Эту операцию (проверка-коррекция) проводят с каждым блоком кода.