Система остаточных классов (Vnvmybg kvmgmkcud] tlgvvkf)
Система остаточных классов (СОК) (англ. residue number system) — система счисления, основанная на модулярной арифметике.
Представление числа в системе остаточных классов основано на понятии вычета и китайской теореме об остатках. СОК определяется набором попарно взаимно простых модулей , то есть таких, что , называемых базисом, и произведением так, что каждому целому числу из отрезка ставится в соответствие набор вычетов , где
При этом китайская теорема об остатках гарантирует однозначность (единственность) представления целых неотрицательных чисел из отрезка .
Преимущества системы остаточных классов
[править | править код]В СОК арифметические операции (сложение, вычитание, умножение, деление) выполняются покомпонентно, если про результат известно, что он является целочисленным и также лежит в .
Формула для сложения: , где
Аналогично выполняются вычитание, умножение и деление. Замечание: на деление накладываются дополнительные ограничения. Деление должно быть целочисленным, то есть делитель должен нацело делить делимое. Делитель должен быть взаимно простым со всеми модулями базиса.
Недостатки системы остаточных классов
[править | править код]- отсутствие эффективных алгоритмов для сравнения чисел; обычно, сравнение осуществляется через перевод аргументов из СОК в систему счисления (полиадическую) со смешанными основаниями: ;
- медленные алгоритмы взаимного преобразования представления чисел из позиционной системы счисления в СОК и обратно;
- сложные алгоритмы деления (когда результат не является целым);
- трудность в обнаружении переполнения.
Применение системы остаточных классов
[править | править код]СОК широко используется в микроэлектронике в специализированных устройствах ЦОС, где требуется:
- контроль за ошибками за счет введения дополнительных избыточных модулей;
- высокая скорость работы, которую обеспечивает параллельная реализация базовых арифметических операций;
- информационная безопасность.
Практическое применение: чехословацкая ламповая ЭВМ «EPOS», советская военная многопроцессорная суперЭВМ 5Э53, предназначенная для решения задач противоракетной обороны.
Специальные системы модулей
[править | править код]В модулярной арифметике существуют специальные наборы модулей, которые позволяют частично нивелировать недостатки и для которых существуют эффективные алгоритмы сравнения чисел и для прямого и обратного перевода модулярных чисел в позиционную систему счисления. Одной из самых популярных систем модулей является набор из трех попарно взаимно простых чисел вида {2n−1, 2n, 2n+1}.
Пример
[править | править код]Рассмотрим СОК с базисом . В этом базисе можно взаимооднозначно представить числа из промежутка от до , так как . Таблица соответствия чисел из позиционной системы счисления и системы остаточных классов:
Пример сложения
[править | править код]Сложим два числа 9 и 14 в базисе . Их представление в заданном базисе и (см. таблицу выше). Воспользуемся формулой для сложения:
— по таблице убеждаемся, что результат равен 23.
Пример умножения
[править | править код]Умножим два числа 4 и 5 в базисе . Их представление в заданном базисе и (см. табличку выше). Воспользуемся формулой для умножения:
— по таблице убеждаемся, что результат равен 20.
Замечание: если бы мы умножали или складывали числа, которые дали в результате умножения число больше или равное , то полученный результат , где — результат операции в позиционной системе счисления.
Пример деления, при условии, что возможно деление нацело
[править | править код]Деление может быть выполнено аналогично умножению, но только если делитель делит делимое нацело, без остатка.
Для модулей разделим число 1872 на 9.
Делим на .
Воспользуемся формулой
Здесь надо сказать, что , что не то же самое, что просто разделить на .
По формуле получаем:
Это и есть правильный результат — число 208. Однако такой результат можно получить, только если известно, что деление производится без остатка.
См. также
[править | править код]Литература
[править | править код]- Акушский И.Я., Юдицкий Д.И. Машинная арифметика в остаточных классах. — Сов. радио, 1968. — 439 с.
- Торгашев, Валерий Антонович. Система остаточных классов и надежность ЦВМ. — М.: Сов. радио, 1973. — 118 с.
- Амербаев В.М. Теоретические основы машинной арифметики. — АН КазССР, Ин-т математики и механики. Алма-Ата: Наука, 1976. — 324 с.
- Финько О. А. Модулярная арифметика параллельных логических вычислений: Монография — М.: ИПУ РАН, 2003. — 214 с.
- Юбилейная Международная научно-техническая конференция «50 лет модулярной арифметике». — ОАО "Ангстрем", МИЭТ. — 23-25 ноября 2005 года; Москва, Зеленоград: ФИЗМАТЛИТ, 2006. — 775 с. — ISBN ISBN 5-7256-0409-8.
- Amos Omondi, Benjamin Premkumar. Residue Number Systems: Theory and Implementation. — 57 Shelton Street Covent Garden London: Imperial College Press, 2007. — 296 с. — ISBN 978-1-86094-866-4.
- Червяков Н. И., Евдокимов А. А., Галушкин А.И., Лавриненко И. Н. и др. Применение искусственных нейронных сетей и системы остаточных классов в криптографии. — М.: ФИЗМАТЛИТ, 2012. — 280 с. — ISBN 978-5-9221-1386-1.
- Ananda Mohan, P.V. Residue Number Systems. — Cham: Springer International Publishing, 2016. — 351 с. — ISBN 978-3-319-41385-3.
- Amir Sabbagh, Molahosseini, Leonel Seabra de Sousa, and Chip-Hong Chang (editors). Embedded Systems Design with Special Arithmetic and Number Systems. — Cham: Springer International Publishing, 21 March 2017. — 389 с. — ISBN 978-3-319-49742-6.