Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Арифметика.doc
Скачиваний:
18
Добавлен:
12.11.2019
Размер:
310.78 Кб
Скачать

§ Система счисления в остаточных классах(сок)

Главное отличие системы остаточных классов заключается в том, что у нее имеется не одно , а несколько оснований: bi=(b1,b2,...,bn), причем i-я цифра xi любого числа Х представляет собой остаток от деления исходного числа на i-е основание bi:

Единственное ограничение, налагаемое на величины основания bi, заключается в том, что все bi должны быть взаимно-простыми числами.

Если b1=3 b2=5, то

0 0 0

1 1 1

2 2 2

3 0 3

4 1 4

5 2 0

6 0 1

7 1 2

8 2 3

9 0 4

10 1 0

11 2 1

12 0 2

13 1 3

14 2 4

15 0 0

Полученное сочетание остатков можно принять для изображения (кодирования) чисел в разрешенном диапазоне.

Диапазон представления ><0]

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

Остаток от деления А на число N: A(mod N)=R

Пусть b=7, рассмотрим A=15 B=21

Остаток по модулю 7 А(mod 7)=15(mod 7)=1

B(mod 7)=21(mod 7)=0

Если C=A+B=15+21=36, то C(mod 7)=36(mod 7)=1

(1). т.е. C(mod 7)=(A+B)(mod 7)=A(mod 7)+B(mod 7)

Это можно доказать: A+B=C ; Но

Аналогично

(2). Если C=A*B, то C(mod 7)=(A*B)(mod 7)=A(mod 7)*B(mod 7)

15=3*5 15(mod 3)=15(mod 5)=0

При этом если сумма (если произведение) остатков превышает модуль dm, то она (или оно) тоже берется по модулю dm (делится на dm).

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

Пример:

1.Сложить числа в двоично-кодированной СОК с основаниями b1=3 b2=5 b3=7

38+47

38(mod 3)=2 38(mod 5)=3 38(mod 7 )=3

X1 =3810=233(10/COK)=(10; 011; 011) (2/COK)

47(mod 3)=2 47(mod 5)=2 47(mod 7)=5

X2=4710=255(10/COK)=(10; 010; 101)(2/COK)

X1 (10; 011; 011)

+

X2 (10; 010; 101)

X3 (01; 000; 001) (2/COK)

Проверка: 3810+4710=8510

85(mod 3)=1 85(mod 5)=0 85(mod 7)=1

В СОК наиболее просто и экономично строятся реверсные счетчики, т.к. при увеличении или уменьшении некоторого числа на 1 все остатки от деления также соответственно увеличатся на 1. Если при увеличении числа некоторый остаток имеет величину bi-1, то он заменяется в следующем шаге на 0. При уменьшении числа остаток, равный 0 заменяется на bi-1.

Недостатки СОК

  1. Относительная сложность операции деления. Обычно деление сводится к определению обратной величины делителя Х по итеративной формуле с последующим умножением найденного значения на делимое.

  2. Значительная сложность перевода чисел из принятой позиционной системы в СОК и обратно. Прямое деление на все основания для получения цифр практически не используется (не эффективно и долго). На практике, т.к. в машине уже есть арифметическое устройство, работающее в СОК, для перевода чисел пользуются наборами всех цифр и нужных степеней основания исходной (например, десятичной) систем, представляемых в СОК. Так для перевода числа 1410 в СОК с основанием bi=3;5 нужны такие константы: 100=1=(1;1) 4=(1;4) 101=10=(1;0) Тогда 1410=1*101+4*100=(1;1)*(1;0)+(1;4)(1;1)=(1;0)+(1;4)=(2;4) Обратное преобразование еще более сложно

  3. Относительная сложность сравнения чисел в СОК, поскольку их поразрядное сравнение ничего не дает.

  4. Отсутствие удобных способов определения переполнения разрядной сетки машины результатом некоторой операции, т.к. все операции в СОК являются поразрядными.

В следствии этого СОК получил применение в основном в специализированном ЭИВМ, в которых необходимо высокое быстродействие, диапазон изменения чисел фиксирован, а операция деления встречается редко.