Перевод числа из СОК в обобщенную позиционную систему
Рассмотрим метод определения величины числа связанный с переводом числа из системы остаточных классов в обобщенную позиционную систему (ОПС). Для этого выявим связь между представлением некоторого числа в этих двух системах.
Алгоритм перевода числа из СОК в обобщенную позиционную систему
Пусть СОК задается основаниями и
- число в этой системе. И пусть
являются также основаниями ОПС, тогда число
можно представить в виде
где – коэффициенты (цифры) ОПС.
Очевидно, что диапазоны чисел, представимых в СОК и ОПС совпадают, т.е. можно говорить о наличии взаимно однозначного соответствия между множеством представлений чисел в СОК и ОПС.
Предыдущее равенство можно переписать в следующем виде:
,
откуда следует, что цифры ОПС могут быть получены из соотношений:
, где
,
, где
,
, где
.
Причем при определении цифр по этим формулам все вычисления можно вести в СОК.
Действительно, из формул следует, что , т.е.
- первая СОК цифра, или
.
Для получения
сперва представим
в остаточном коде. Очевидно, что
делится на
. Более того,
взаимно просто со всеми другими модулями. Следовательно, для нахождения цифры
может быть использована процедура деления без остатка:
.
Таким путем, с помощью вычитаний и делений в остаточной записи все цифры ОПС могут быть получены. При этом замечено, что
,
,
и, вообще, для
.
Перевод, осуществляемый согласно описанному алгоритму,содержит всего остаточных арифметических операций вычитания и деления без остатка, где
– число модулей системы.
Модификация алгоритма перевода числа из СОК в обобщенную позиционную систему
Можно предложить некоторую модификацию алгоритма с заменой операции деления операцией умножения. Для этого предварительно вычисляется констант
, которые удовлетворяют условию
.
Эти константы можно, например получить из расширенного алгоритма Евклида
.
Здесь следует заметить тот факт, что константы полностью определяются выбранной системой оснований, поэтому могут быть вычислены заранее и храниться в некоторой таблице.
Если константы вычислены, то вычисление цифр
ОПС по модифицированному алгоритму может быть переписано в виде:
,
,
,
.
Константы принято также записывать в виде
и называть обратными элементами по умножению для чисел по модулю
(multiplicative inverse).
Пример
Пусть дана система оснований . Объем диапазона
. Переведем число
в ОПС.
Найдем сначала константы :
,
,
,
,
,
,
,
,
,
.
Для удобства запишем константы в виде матрицы:
Выполнение алгоритма представлено в следующей таблице.
Перевод числа из СОК в ОПС.
таким образом,
.
Преимущество рассмотренного метода перед методом ортогональных базисов состоит в том, что все вычисления выполняются в модулярной арифметике, причем в отдельных каналах, соответствующих модулям , правда, к сожалению, не параллельно.
Алгоритм перевода числа для специальных систем оснований
Один из вариантов уменьшения числа операций в рассмотренном алгоритме может быть достигнут путём особого выбора системы оснований. Выберем систему оснований СОК следующим образом:
Очевидно, что основания такой системы взаимно простые числа. Эта система обладает той особенностью, что
т.е. из сравнений
получаем, что все константы
. При таком выборе системы оснований алгоритм можно видоизменить следующим образом: вычисления начинают со старших модулей, тогда, т.к. константы
, то в алгоритме отпадает необходимость умножать на
, т.е.
,
,
,
,
- где
.
Пример
Выберем систему оснований по указанному принципу:
.
Объем диапазона .
Введем новые обозначения
.
Пусть в системе оснований задано число
. Переведём его в ОПС с той же системой оснований.
Метод перевода чисел из СОК в ОПС на основе выбора системы оснований
таким образом,
.
Как видно, при указанном выборе системы оснований число операций уменьшается вдвое, т.к. необходимо для осуществления перевода совершить операцию вычитания, против
операций в общем случае. Кроме того отпадает необходимость вычислять и хранить константы
.
Похожим свойством обладают системы оснований
,
для которых все константы .
Главный недостаток указанных систем - быстрый рост оснований системы, так как . Один из способов достижения компромисса - это выбор системы оснований, для которой лишь часть констант
.