Код с обнаружением ошибок
Код с обнаружением ошибок — это способ представления данных, при котором по принятому сообщению можно определить, что при передаче или хранении произошла ошибка. Для этого к исходным данным добавляют проверочную информацию.
Обычно сначала вычисляют проверочный разряд по исходным данным, а затем передают данные вместе с ним. Получатель повторяет вычисление и сравнивает результат с принятым проверочным разрядом. Если результаты не совпали, сообщение считают ошибочным и, например, запрашивают повторную передачу.
Простейший пример: проверка чётности
При проверке чётности к двоичной последовательности добавляют один бит так, чтобы общее число единиц стало чётным. Такой бит называют битом чётности. Это пример избыточного кодирования: дополнительный бит не содержит нового исходного сообщения, а служит для контроля.
Здесь \(p\) — проверочный бит, а \(b_1, b_2, \dots, b_n\) — биты данных. При чётной проверке \(p=1\), если в данных нечётное число единиц, и \(p=0\), если число единиц чётное.
Передаём данные \(1011\). В них три единицы, поэтому добавляем \(p=1\): получается \(10111\). Если при передаче последовательность станет \(10011\), в ней четыре единицы. Проверка покажет несоответствие правилу? Для принятого слова нужно учитывать, какой вариант проверки задан: при чётной проверке четыре единицы дают правильную чётность, поэтому такая конкретная ошибка может остаться незамеченной. Одиночное изменение одного бита, напротив, изменит чётность и будет обнаружено.
Помехоустойчивое кодирование может не только обнаруживать, но и исправлять некоторые ошибки. Код с обнаружением ошибок сам по себе обычно лишь сообщает о нарушении; восстановить исходный бит по нему нельзя.
Какую ошибку гарантированно обнаружит проверка чётности?
Главное
- Код с обнаружением ошибок добавляет проверочную информацию к данным.
- Проверка чётности обнаруживает одиночные ошибки, но может пропустить чётное число изменений.
- Обнаружение ошибки не означает её исправление.