Цифровой метод контроля

Числовой метод контроля

 

При числовом методе контроля код заданного числа определяется как наименьший положительный остаток от деления числа на выбранный модуль р:

rA = A-{A/p}p

где в фигурных скобках {} — целая часть от деления числа; А — контролируемое число.

Величина модуля р существенно влияет на качество контроля; если р = q (q — основание системы счисления, в которой выражено число) и имеет место числовой контроль, то контролируется только младший разряд числа и контроль как таковой не имеет смысла; для р = qm справедливы аналогичные соображения, так как если m<n, то опять не все разряды числа участвуют в контроле и ошибки в разрядах старше m вообще не воспринимаются.

При числовом методе контроля по модулю p для определения остатка используют операцию деления, требующую больших затрат машинного времени. Для числового метода контроля справедливы основные свойства сравнений (сложение, умножение сравнений и т. д.). Поэтому, если А ≡ rА(mod p);

В = rB(mod p), где 0≤rA≤p-1; 0≤rB≤p-1, то А + В = rа + rB (mod p). Отсюда

rA+B≡rA + rB(mod p)

Аналогичным образом доказывается справедливость и следующих соотношений:

rA-B≡rA - rB(mod p);

rAB≡rArB(mod p).

 

 

При цифровом методе контроля контрольный код числа образуется делением суммы цифр числа на выбранный модуль:

или

Возможны два пути получения контрольного кода: 1)непосредственное деление суммы цифр на модуль р; 2) суммирование цифр по модулю р.

Второй путь проще реализуется, так как если аi < р , то контрольный код получается только операцией суммирования.

Однако при цифровом методе свойства сравнений не всегда справедливы, и происходит это из-за наличия переносов (заемов) при выполнении арифметических действий над числами. Поэтому нахождение контрольного кода результата операции происходит обязательно с коррекцией.

Пусть заданы числа А и В и соответственно их контрольные коды

; ; C = A + B.

Найдем контрольный код

Видимо, когда есть результат операции, тогда найти методом суммирования цифр по модулю не сложно. Какова будет возможность получения через контрольные коды слагаемых ?

Сумму цифр ci числа можно найти, зная цифры ai и bi и количество переносов в каждом разряде. Каждый перенос уносит из данного разряда q единиц и добавляет одну единицу в следующий разряд, т. е. сумма цифр уменьшится на величину q-1 на каждый перенос. Тогда

,

где l — количество переносов, возникших при сложении.

Так как ; , то .

Подставив эти значения в предыдущую формулу, получим

.

Аналогичными рассуждениями можно показать, что для разности чисел

С = А - В

где s - количество заемов при выполнении операции.