Контрольная сумма и проверка данных
💻 Информатика · 6 класс
Контрольная сумма и проверка данных
При передаче данных по проводам или по сети иногда возникают помехи, и отдельный бит может «перевернуться»: 0 станет 1 или наоборот. Тогда полученное сообщение будет отличаться от отправленного. Чтобы заметить такую ошибку, к данным добавляют дополнительную проверочную информацию. Простейший её вид — контрольная сумма, или контрольный разряд.
Идея проверки
Суть в том, чтобы по основным данным заранее вычислить небольшое число и передать его вместе с данными. На приёмной стороне это число вычисляют заново — уже из полученных данных — и сравнивают с присланным. Если значения совпали, скорее всего, данные пришли без искажений. Если разошлись, значит, при передаче что-то изменилось, и сообщение нужно запросить ещё раз.
Бит чётности
Часто используют бит чётности. К группе битов добавляют один разряд так, чтобы общее число единиц в группе стало чётным. Получатель пересчитывает единицы: если их количество чётное — всё в порядке, если вдруг нечётное — где-то произошла ошибка. Этот способ простой, но довольно полезный.
| Данные | Единиц в данных | Бит чётности | Стало единиц |
|---|---|---|---|
| 1011 | 3 | 1 | 4 (чётно) |
| 0110 | 2 | 0 | 2 (чётно) |
| 1000 | 1 | 1 | 2 (чётно) |
Видно, что бит чётности подбирают так, чтобы единиц всегда было чётное число: если их было нечётно, добавляют единицу, если чётно — ноль.
Пример обнаружения ошибки
Отправлено: 1011 + бит 1 -> 10111 (единиц 4, чётно)
Получено: 10011 (единиц 3, нечётно!)
Вывод: при передаче возникла ошибкаПолучатель видит нечётное число единиц и понимает, что данные испорчены. Какой именно бит перевернулся, он не знает, но сам факт ошибки замечен — этого достаточно, чтобы переслать сообщение заново.
Где применяют проверку
Подобные проверки используют повсюду, где данные передают или хранят. При скачивании файлов из сети к ним прилагают контрольную сумму, и программа сама сверяет её, чтобы убедиться, что файл не повредился в пути. Похожие приёмы есть в штрих-кодах товаров и в номерах банковских карт: один из разрядов там контрольный, и по нему легко заметить опечатку. Существуют и более сложные способы, которые умеют не только обнаружить ошибку, но и исправить её. Но в основе всех этих способов лежит одна и та же идея: добавить к данным проверочную информацию и сверить её после передачи.
Правило. Бит чётности замечает ошибку в одном разряде, но не показывает, какой именно бит испорчен, и не умеет её исправить. Если же перевернулись сразу два бита, чётность сохранится, и такая двойная ошибка останется незамеченной.
Кратко о главном
- Контрольная сумма помогает заметить искажение данных при передаче.
- Её вычисляют до передачи и сравнивают с пересчитанной у получателя.
- Бит чётности дополняет данные так, чтобы число единиц было чётным.
- Простая проверка обнаруживает ошибку, но не исправляет её и не ловит все случаи.