За аналогією з попереднім пунктом можна було б запропонувати простий спосіб встановлення помилки - передавати кожен символ тричі. Такий метод кодування призводить до надмірності повідомлення L = 3, що неприйнятно з економічної точки зору.
Яким чином слід здійснити кодування, щоб помилка при передачі могла бути локалізована (тобто визначено, в якому бите знаходиться помилка) і, природно, усунена. Такий метод кодування був запропонований в 1948 р Р.Хеммінгом; побудовані за цим методи коди отримали назву коди Хеммінга.
Основна ідея полягає в додаванні до інформаційних бітам декількох бітів парності, кожен з яких контролює певні інформаційні біти. Якщо пронумерувати всі передані біти, починаючи з 1 зліва направо (що інформаційні біти нумеруються з 0 і справа наліво), то контрольними (перевірочними) виявляються біти, номери яких рівні ступеням числа 2, а всі інші є інформаційними. Наприклад, для 8-бітного інформаційного коду контрольними виявляться біти з номерами 1, 2, 4 і 8:
1 2 3 4 5 6 7 8 9 10 11 12
20 21 22 23
Номери контрольованих бітів для кожного перевірочного наведені в таблиці нижче. У перелік контрольованих бітів входить і той, в якому розташовується перевірки. При цьому стан перевірочного біта встановлюється таким чином, щоб сумарна кількість одиниць в контрольованих ним бітах було парним.
Таблиця 5.1
Таблица 5.1.
перевірочні біти
контрольовані біти
Приклад 5.1
Припустимо, що в каналі зв'язку під дією перешкод відбулося спотворення і замість 0100101 було прийнято 0100111. Для виявлення помилки виробляють перевірки на парність.
Перша перевірка: сума 1 + 3 + 5 + 7 = 0 + 0 + 1 + 1 парні. В молодший розряд номера помилкової позиції записуємо 0.
Друга перевірка: сума 2 + 3 + 6 + 7 = 1 + 0 + 1 + 1 нечетна. У другій розряд номера помилкової позиції записуємо 1.
Третя перевірка: сума 4 + 5 + 6 + 7 = 0 + 1 + 1 + 1 нечетна. У третій розряд номера помилкової позиції записуємо 1.
Номер помилкову позицію 101 = 6. Отже, символ шостій позиції слід змінити на зворотний, і ми отримаємо правильну кодову комбінацію.