P
pro·school.ru
Каталог школ

Контрольная сумма и проверка данных

💻 Информатика · 6 класс

Контрольная сумма и проверка данных

При передаче данных по проводам или по сети иногда возникают помехи, и отдельный бит может «перевернуться»: 0 станет 1 или наоборот. Тогда полученное сообщение будет отличаться от отправленного. Чтобы заметить такую ошибку, к данным добавляют дополнительную проверочную информацию. Простейший её вид — контрольная сумма, или контрольный разряд.

Идея проверки

Суть в том, чтобы по основным данным заранее вычислить небольшое число и передать его вместе с данными. На приёмной стороне это число вычисляют заново — уже из полученных данных — и сравнивают с присланным. Если значения совпали, скорее всего, данные пришли без искажений. Если разошлись, значит, при передаче что-то изменилось, и сообщение нужно запросить ещё раз.

Бит чётности

Часто используют бит чётности. К группе битов добавляют один разряд так, чтобы общее число единиц в группе стало чётным. Получатель пересчитывает единицы: если их количество чётное — всё в порядке, если вдруг нечётное — где-то произошла ошибка. Этот способ простой, но довольно полезный.

ДанныеЕдиниц в данныхБит чётностиСтало единиц
1011314 (чётно)
0110202 (чётно)
1000112 (чётно)

Видно, что бит чётности подбирают так, чтобы единиц всегда было чётное число: если их было нечётно, добавляют единицу, если чётно — ноль.

Пример обнаружения ошибки

Отправлено: 1011 + бит 1 -> 10111 (единиц 4, чётно)
Получено:   10011 (единиц 3, нечётно!)
Вывод: при передаче возникла ошибка

Получатель видит нечётное число единиц и понимает, что данные испорчены. Какой именно бит перевернулся, он не знает, но сам факт ошибки замечен — этого достаточно, чтобы переслать сообщение заново.

Где применяют проверку

Подобные проверки используют повсюду, где данные передают или хранят. При скачивании файлов из сети к ним прилагают контрольную сумму, и программа сама сверяет её, чтобы убедиться, что файл не повредился в пути. Похожие приёмы есть в штрих-кодах товаров и в номерах банковских карт: один из разрядов там контрольный, и по нему легко заметить опечатку. Существуют и более сложные способы, которые умеют не только обнаружить ошибку, но и исправить её. Но в основе всех этих способов лежит одна и та же идея: добавить к данным проверочную информацию и сверить её после передачи.

Правило. Бит чётности замечает ошибку в одном разряде, но не показывает, какой именно бит испорчен, и не умеет её исправить. Если же перевернулись сразу два бита, чётность сохранится, и такая двойная ошибка останется незамеченной.

Кратко о главном

  • Контрольная сумма помогает заметить искажение данных при передаче.
  • Её вычисляют до передачи и сравнивают с пересчитанной у получателя.
  • Бит чётности дополняет данные так, чтобы число единиц было чётным.
  • Простая проверка обнаруживает ошибку, но не исправляет её и не ловит все случаи.