Другими словами, значение каждого модуля на единицу меньше очередной степени 2. Такой выбор значения модуля
зачастую упрощает выполнение основных арифметических операций, так как выполнять вычисления с числами, представленными по модулю , несколько проще, чем с числами, представленными в обратном коде. После того как значения модулей таким образом выбраны, полезно несколько ослабить условие и потребовать чтобы только , . (5.2)Таким образом, значение
принимается в качестве оптимального вместо , поскольку это, с одной стороны, не влияет на справедливость китайской теоремы об остатках, а с другой означает, что может быть любым - битовым двоичным числом. При таком допущении, операции сложения и вычитания по модулю выполняются следующим образом: , .Здесь
и указывают на действия, которые с учётом условия (5.2) должны быть выполнены с отдельными компонентами кортежей и при сложении или умножении соответственно. При вычитании можно пользоваться и соотношением: .Эти операции могут быть эффективно выполнены, даже если
больше машинного слова компьютера, так как совсем просто вычислить остаток положительного числа по модулю степени 2 или разложить число по степеням 2. Для работы с модулями вида необходимо знать, при каких условиях число является взаимно простым с числом . Для этого существует простое правило: . (5.3)Формула (5.3) утверждает, в частности, что
.Уравнение (5.3) следует из алгоритма Евклида и тождества
,где mod означает операцию нахождения остатка от деления. Поэтому на компьютере с длиной слова 232 можно выбрать
, , , , ,что обеспечивает эффективность сложения, вычитания и умножения целых чисел в интервале вплоть до
.Как мы уже заметили, операции преобразования чисел в СОК и обратно очень важны. Модулярное представление
для заданного числа А может быть получено посредством деления А на с запоминанием остатков. В случае, когда , возможно применение более подходящего способа, который состоит в том, чтобы, используя СОК, вычислить полином .Если основание b = 2 и модули
имеют вид , оба подхода сводятся к совсем простому способу. Рассмотрим двоичные представления числа А с блоками по бит:где
и при .Тогда
,Поскольку
. Поэтому вычисляются путём сложения битовых чисел .Обратный переход от СОК к позиционной системе счисления выполняется немного сложнее. Как мы видели при доказательстве китайской теоремы об остатках, при вычислении обратных мультипликативных элементов требуется уметь вычислять значение функции Эйлера, которое в общем случае требует факторизации, т. е. разложения чисел
на простые множители. Даже это обстоятельство показывает, что обратное преобразование чисел из СОК в позиционную систему счисления приводит к большому числу вычислительных операций с высокой точностью, а именно этого нам хотелось бы избежать прежде всего. Поэтому, чтобы найти действительно пригодный для практического применения метод перехода от к А, необходимо иметь другое доказательство китайской теоремы об остатках. Такое доказательство предложено в 1958 г. Х. Л. Гарнером. Оно основано на использовании констант , где . (5.4)Константы
можно вычислить с помощью расширенного алгоритма Евклида, который по заданным i и j позволяет определить числа a и b такие, что , и можно положить . В частности, для величины, обратной к по модулю , легко получить сравнительно простую формулуи
. Действительно, если , то . Поэтому при имеем ; а так как эти последние величины расположены между нулём и , должно быть .Тогда
Вернёмся к общему случаю. Так как
, удовлетворяют условиям (5.4), то можно выполнить присваивания , , , (5.5) .Тогда число
(5.6)будет удовлетворять условиям
, для . (5.5)