Aljebro
Просветленный
(27114)
Рад за код. И что дальше? Исправить по нему ничего нельзя.
...
Проверка четности – очень простой метод для обнаружения ошибок в передаваемом пакете данных. С помощью данного кода мы не можем восстановить данные, но можем обнаружить только лишь одиночную ошибку.
В каждом пакет данных есть один бит четности, или, так называемый, паритетный бит. Этот бит устанавливается во время записи (или отправки) данных, и затем рассчитывается и сравнивается во время чтения (получения) данных. Он равен сумме по модулю 2 всех бит данных в пакете. То есть число единиц в пакете всегда будет четно . Изменение этого бита (например с 0 на 1) сообщает о возникшей ошибке.
Сергей, а можете объяснить как обнаруживаются эти 2 ошибки.
Сергей Плеханов
Мудрец
(10356)
Реализацию не помню, только теорию. Есть понятие "кодовое расстояние"- сколько бит надо поменять, что бы перейти от одного допустимого значения к другому.
Если контроля нет, то КР=1, любое изменение кода, в т. ч. ошибка, дает допустимое значение и отличить ее нельзя.
Если КР=2 то одиночное изменение бита даст недопустимое значение и одиночная ошибка будет обнаружена - это вариант с 1 контрольным битом. Но исправить ее нельзя, т. к. ошибочное значение на одинаковом кодовом расстоянии от двух верных значений и выбрать одно из них невозможно.
Если КР=3 то одна ошибка даст неверное значение рядом с верным, т. е. ее можно будет исправить. Если ошибки две, то значение кода будет неверным, но он будет находиться не возле исходного значения, а возле соседнего, и их исправление будет неверным.