Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы модулярной арифметики. Практикум
.pdf
Практическая работа 4
не занимают дополнительной памяти. Недостатком является
неуниверсальность таких алгоритмов и для случая «больших»
оснований СОК, разработка соответствующего алгоритма сама
по себе может стать весьма нетривиальной задачей.
Задания для практической работы
Перемножить числа A = (a
, a2, a3, a4, a5) и B = (b1, b2, b3, b4, b5)
1
в СОК по заданным основаниям p1, p2, p3, p4, p5 двумя способами:
1. Без использования теории индексов.
2. С использованием теории индексов.
pp2p3p4p
1 7 19 23 43 59 0 12 0 14 47 6 14 4 26 50
2 3 13 37 41 71 0 11 27 6 6 0 3 25 31 31
3 2 17 31 43 61 1 4 12 12 2 1 16 1 32 36
4 5 17 37 47 71 1 7 8 23 35 1 12 16 12 59
5 2 13 37 47 61 1 5 19 31 38 1 4 5 35 6
6 3 13 29 41 71 1 4 19 37 28 0 11 19 4 53
7 2 17 37 53 71 0 8 4 26 45 1 10 36 24 67
8 5 11 29 53 59 4 9 9 27 44 0 7 26 20 40
9 2 13 37 41 67 1 10 31 13 20 1 11 3 23 41
10 2 11 37 41 67 0 10 26 6 35 1 7 17 9 54
11 5 11 37 41 67 3 0 36 28 2 2 5 30 22 30
12 7 17 37 43 61 5 13 32 34 23 0 8 7 34 47
13 7 11 31 41 61 1 0 20 11 60 1 5 26 1 0
14 2 19 23 41 59 1 10 21 39 30 0 7 4 22 14
15 2 11 37 41 61 1 1 14 24 1 0 4 12 29 43
16 2 17 37 41 67 0 6 6 21 60 0 12 21 31 7
17 2 17 31 43 67 1 14 4 16 20 0 0 13 34 32
18 7 19 31 47 71 4 6 30 11 22 1 2 29 20 57
19 2 17 31 41 71 0 12 25 7 2 0 5 7 33 66
20 5 13 23 53 71 1 8 0 14 67 2 6 11 51 22
21 5 17 23 47 67 1 7 0 22 50 4 2 11 39 31
22 2 17 29 41 59 1 2 15 7 51 1 16 0 17 30
23 5 13 23 53 61 0 8 18 15 48 4 11 9 29 46
24
2 11 37 53 71 1 7 4 5 30 1 4 22 0 63
25 2 19 29 47 59 1 3 26 34 43 0 8 16 20 40
5
aa2a3a4a
bb2b3b4b
5
5
- 41 -

Спутниковые и радиорелейные системы передачи данных
pp2p3p4p
5
aa2a3a4a
bb2b3b4b
5
26 2 17 37 41 67 1 2 16 40 37 0 9 16 27 61
27 3 13 31 43 71 2 8 22 15 35 1 7 0 20 43
28 2 13 23 47 59 0 1 2 12 55 0 10 6 20 26
29 2 19 29 41 61 0 8 17 19 31 0 17 17 30 50
30 5 17 29 41 61 1 13 5 2 21 1 2 0 17 20
31 2 13 37 41 67 0 9 16 1 62 1 5 29 34 10
32 3 17 31 47 61 2 3 19 29 2 2 16 25 45 51
33 3 13 37 47 71 2 9 1 45 6 1 3 4 22 51
34 3 19 23 47 67 2 3 21 16 61 0 4 6 10 53
35 5 17 29 47 59 4 9 28 16 50 0 13 7 20 11
36 2 19 37 47 71 1 4 21 36 48 0 3 26 43 25
37 7 11 23 53 61 4 0 21 5 23 1 0 20 40 22
38 7 17 29 41 71 1 16 19 10 48 0 3 7 15 24
39 2 11 23 47 71 0 9 10 27 6 1 0 20 6 34
40 3 19 29 53 67 0 6 17 33 1 1 3 15 9 8
41 3 17 29 43 67 2 12 12 31 9 2 0 1 28 43
42 5 11 31 43 59 4 4 1 1 53 1 6 16 39 25
43 5 17 23 53 71 0 2 3 2 28 2 2 3 11 60
44 7 17 29 43 67 0 10 6 3 10 6 5 3 12 0
45 2 19 29 43 71 1 16 20 26 10 0 2 20 5 24
46 3 19 29 43 59 1 17 10 40 9 1 17 0 7 28
47 3 17 23 41 67 2 13 2 5 5 1 15 3 17 27
48 2 19 37 47 59 1 3 23 11 44 1 7 12 24 11
2 13 37 47 71 1 0 30 41 66 0 12 18 3 0
49
50 7 17 37 53 67 6 11 18 14 57 5 16 11 43 39
51 3 19 23 43 61 1 5 9 0 38 1 3 18 30 4
52 2 11 31 43 67 1 4 18 1 43 0 6 8 35 64
53 2 17 29 47 67 0 10 19 32 19 1 12 25 12 27
54 7 11 31 43 71 0 9 16 14 3 4 6 7 16 44
55 3 17 37 43 71 1 14 12 36 19 2 6 32 1 70
56 3 17 23 43 61 1 2 3 26 39 1 11 3 42 5
57 5 11 37 53 61 0 0 29 3 47 2 0 36 25 50
58 3 13 23 41 71 1 1 0 2 3 2 9 22 25 7
59 3 17 23 47 67 0 14 9 33 57 0 11 18 19 32
60 2 19 31 43 67 1 4 22 7 20 1 14 27 6 30
61 3 11 29 53 61 1 9 26 42 21 0 6 15 47 8
5
- 42 -

Практическая работа 4
pp2p3p4p
5
aa2a3a4a
bb2b3b4b
5
62 3 17 29 47 59 0 7 1 42 9 2 0 5 28 8
63 7 19 37 41 71 0 13 8 17 34 6 0 9 33 62
64 3 13 37 41 67 2 12 34 39 26 2 9 23 40 11
65 3 13 37 47 71 0 10 21 27 66 1 8 7 35 63
66 2 13 29 43 61 0 9 15 8 38 1 3 5 33 29
67 2 13 37 47 61 0 7 20 45 49 1 11 25 3 12
68 5 19 37 43 71 2 11 4 27 23 1 15 0 0 29
69 5 17 29 47 59 4 7 2 14 56 3 9 6 38 24
70 5 13 29 41 61 0 5 2 14 56 2 3 19 19 30
71 7 13 29 47 67 6 4 18 1 30 5 3 6 30 21
72 7 17 37 43 71 3 10 0 15 1 1 3 19 3 29
73 7 17 23 41 71 0 8 6 19 49 3 5 7 31 33
74 5 17 37 53 71 0 6 21 18 41 4 3 29 30 3
75 5 13 37 47 61 4 0 1 21 31 2 12 9 14 44
76 5 13 31 53 61 4 1 1 48 42 1 1 21 17 26
77 7 11 29 47 59 6 5 26 40 9 2 0 8 26 56
78 2 13 31 41 67 1 6 21 9 13 1 1 7 6 63
79 3 11 23 43 61 0 0 20 16 18 1 6 22 19 35
80 5 17 31 43 71 1 6 16 42 70 0 13 23 9 59
81 2 11 37 47 67 1 7 2 36 21 1 8 32 36 21
82 3 17 37 43 61 1 10 17 35 48 0 1 33 14 11
83 3 19 31 47 61 1 5 5 31 52 2 2 25 10 57
84 2 11 31 41 67 0 7 12 2 7 0 9 4 40 6
7 17 31 47 71 5 0 18 44 62 4 4 22 36 34
85
86 3 19 29 53 59 1 2 17 1 42 1 6 28 30 16
87 3 13 23 47 67 0 12 19 7 47 1 0 12 20 56
88 5 17 37 47 71 1 3 3 37 13 2 2 6 13 39
89 2 17 29 43 61 1 3 5 33 37 0 7 10 26 2
90 2 19 29 41 71 1 1 15 4 31 0 14 15 25 40
91 5 17 29 53 61 0 13 23 23 20 0 13 28 2 48
92 7 13 29 43 71 6 9 20 29 27 5 8 10 4 55
93 5 11 37 53 59 4 4 2 13 14 2 10 30 12 23
94 5 13 31 53 59 4 2 12 40 12 2 3 7 36 24
95 3 19 23 41 59 1 11 14 19 33 0 12 16 26 54
96 2 19 37 43 61 1 4 12 13 14 1 10 35 3 7
5
- 43 -

Спутниковые и радиорелейные системы передачи данных
pp2p3p4p
97 7 13 23 47 61 0 10 15 24 35 1 11 7 4 36
98 2 11 23 53 71 0 10 19 5 63 1 0 16 5 48
99 5 19 23 43 71 4 7 4 9 65 1 6 5 23 13
100 2 19 31 41 71 1 7 8 1 29 1 14 17 19 2
5
aa2a3a4a
bb2b3b4b
5
Контрольные вопросы
1. Как реализуется умножение чисел в СОК просмотровой
таблицей?
2. Как реализуется умножение чисел в СОК сумматорами
дискретных логарифмов?
5
- 44 -

Практическая работа 5
Цель занятия: изучение методов перевода чисел из десятич-
ной и двоичной систем счисления в СОК.
Знания и умения, приобретаемые студентом в результате осво-
ения темы, формируемые компетенции или их части: ПК-1, ПК-7.
В результате освоения темы обучающийся должен
• знать: методы прямого перевода чисел из позиционной
системы счисления (ПСС) в СОК, быстрого поциферного
перевода чисел из двоичной и десятичной систем счисления в СОК.
• уметь: быстро переводить числа из ПСС в СОК.
• владеть: знаниями, умениями и навыками перевода чи-
сел из ПСС в СОК.
Теоретическая часть
Ранее предполагалось, что перевод чисел из позиционной системы счисления (ПСС) в остаточное представление СОК – это
трудоемкая и плохо поддающаяся распараллеливанию операция.
Действительно, прямой способ предполагает выполнение
операции деления на каждое из оснований СОК.
Пример.
Пусть задана СОК с основаниями p
Рабочий диапазон этой СОК: P = p
то есть можно говорить о взаимно-однозначном представлении
любого из чисел диапазона [0;104] с соответствующим набором
остатков в этой СОК
A = 103 = (103 mod 3, 103 mod 5, 103 mod 7) = (1, 3, 5).
Из-за специфики выполнения операции деления на современных микропроцессорах, а также возможно больших (в случае задействования большого числа оснований СОК) размеров
чисел, подлежащий переводу в СОК, этот способ не является
хорошим.
= 3, p2 = 5, p3 = 7.
1
1*p2*p3
= 3*5*7 = 105,
- 45 -

Спутниковые и радиорелейные системы передачи данных
Ускорим его.
Создадим при инициализации СОК несколько вспомогатель-
ных таблиц.
Таблица первого десятка.
p = 3 p2 = 5 p3
0 0 0 0
1 1 1 1
2 2 2 2
3 0 3 3
4 1 4 4
5 2 0 5
6 0 1 6
7 1 2 0
8 2 3 1
9 0 4 2
Таблица десятков.
p = 3 p2 = 5 p3
0 0 0 0
10 1 0 3
20 2 0 6
30 0 0 2
40 1 0 5
50 2 0 1
60 0 0 6
70 1 0 0
80 2 0 3
90 0 0 6
Таблица сотен.
p = 3 p2 = 5 p3
0 0 0 0
100 1 0 2
- 46 -

Практическая работа 5
p = 3 p2 = 5 p3
200 2 0 4
300 0 0 6
400 1 0 1
500 2 0 3
600 0 0 5
700 1 0 0
800 2 0 2
900 0 0 4
Сотни, начиная от 200, в таблице сотен для выбранных оснований p
= 3, p2 = 5, p3 = 7 – избыточны, тем не менее, проиллю-
1
стрируем общий случай.
Сам расчет этих таблиц осуществляется только при помощи
операции модулярного сложения, а именно «приплюсовыванием (в терминах начальной школы)» единицы, десятка, сотни к
предыдущей вычисленной строке соответствующей таблицы.
Число нуль и единица, при этом полагаются известными (действительно, это всегда кортежи из всех нулей и всех единиц соответственно).
Вспомним теперь, что любое целое неотрицательное число в
ПСС может быть представлено в виде суммы соответствующего
числа единиц, сотен, десятков, тысяч и т.д. В нашем случае СОК
с основаниями p
= 3, p2 = 5, p3 = 7 – это единицы, десятки и,
1
возможно, число 100.
Так, 103 = 100+0*10 + 3.
Выбираем из таблиц соответствующие значения, складываем
их непосредственно в СОК, и получаем правильный ответ.
103 = 100 + 0*10 + 3 = (1, 0, 2) + (0, 0, 0) + (0, 3, 3) = (1, 3, 5).
Сложность данного способа прямо пропорционально числу
десятичных разрядов числа в ПСС. Ускорить процесс сложения
можно на ЭВМ параллельной архитектуры, используя метод
древовидного сложения или бинарного сдваивания (рассмотрим
его далее при переводе двоичных чисел в СОК).
- 47 -

Спутниковые и радиорелейные системы передачи данных
Перевод десятичных чисел в СОК хорош для решения учебных задач. В реальности, более востребованным является перевод двоичных чисел в СОК. И он оказывается, в определенном
смысле, более простым чем перевод десятичных чисел в СОК.
По аналогии с таблицами единиц, десятков и сотен, создадим
таблицу значений степеней двойки в СОК.
Таблица степеней двойки в СОК
0=0 0 0 0
1=1 1 1 1
10=2 2 2 2
100=4 1 4 4
1000=8 2 3 1
10000=16 1 1 2
100000=32 2 2 4
1000000=64 1 4 1
p
= 3 p2 = 5 p3
Вычисление строк таблицы степеней двойки использует
только операцию модулярного сложения. Действительно, чтобы
найти значение 2 в СОК, нужно сложить 1 + 1, чтобы найти значение 4 в СОК, нужно сложить 2 + 2, чтобы найти значение 8 в
СОК, нужно сложить 4 + 4 и т. д.
Теперь для быстрого перевода любого двоичного числа из
диапазона [0; 104] нужно представить его в виде суммы соответствующих отличных от нуля двоичных разрядов, взять значение
каждого этого разряда из таблицы и выполнить несколько операций модулярного сложения.
A = 103 = 1100111(в 2-й СС) =
= 1000000 + 100000 + 0*10000 + 0*1000 + 100 + 10 + 1 =
= (1, 4, 1) + (2, 2, 4) + (0, 0, 0) + (0, 0, 0) +
+ (1, 4, 4) + (2, 2, 2) + (1, 1, 1) = (1, 3, 5).
Процесс сложения можно ускорить в разы, если использовать
технологию бинарного сдваивания.
- 48 -

Практическая работа 5
1. (1, 4, 1) + (2, 2, 4) = (0, 1, 5)
2. (0, 0, 0) + (0, 0, 0) = (0, 0, 0)
3. (1, 4, 4) + (2, 2, 2) = (0, 1, 6)
4. (1, 1, 1) + (0, 0, 0) = (1, 1, 1) – слагаемое (0, 0, 0) – вспомогательное
5. (0, 1, 5) + (0, 0, 0) = (0, 1, 5)
6. (0, 1, 6) + (1, 1, 1) = (1, 2, 0)
7. (0, 1, 5) + (1, 2, 0) = (1, 3, 5)
Шаги 1, 2, 3, 4 не зависят друг от друга и могут быть выполнены одновременно на первом такте сложения ЭВМ параллельной архитектуры.
Шаги 5, 6 тоже не зависят друг от друга и могут быть выполнены на втором такте сложения ЭВМ параллельной архитектуры.
Итоговый шаг 7 выполняется на третьем такте.
Таким образом, при выполнении операции сложения остатков на ЭВМ параллельной архитектуры алгоритм сложения из
линейного становится логарифмическим, что дает дополнительное ускорение, например, при переводе 256-битовых двоичных
чисел в СОК в 16 раз.
Использование техники бинарного сдваивания на ЭВМ последовательного принципа действия, выигрыша по времени не дает.
Задания для практической работы
1. Перевести в СОК по заданным основаниям p
десятичные числа A
, A2, A3, A4, A5 двумя способами:
1
, p2, p3, p4, p5
1
1. Прямой перевод.
2. Используя промежуточные таблицы перевода.
p
1 7 19 23 43 59 7936 8579 7780 6936 594
2 3 13 37 41 71 8134 7685 2055 2522 820
3 2 17 31 43 61 2993 6026 432 5185 4618
4 5 17 37 47 71 7953 8247 2312 8502 5033
5 2 13 37 47 61 1597 7574 710 7128 6809
6 3 13 29 41 71 3439 520 8643 3868 3144
7 2 17 37 53 71 8396 8118 7219 5178 2384
p
p
p
2
3
p
4
5
A
A
2
A3A
4
- 49 -
A
5

Спутниковые и радиорелейные системы передачи данных
p
p
p
p
2
3
p
4
5
A
A
2
A3A
A
4
8 5 11 29 53 59 9036 1391 3292 5813 3397
9 2 13 37 41 67 7753 548 6822 4823 5021
10 2 11 37 41 67 2262 7141 8213 5633 5116
11 5 11 37 41 67 6463 8858 8998 1921 3661
12 7 17 37 43 61 8610 4086 8095 220 8230
13 7 11 31 41 61 9132 1345 303 1512 3938
14 2 19 23 41 59 9415 7051 3084 6355 2563
15 2 11 37 41 61 3653 8119 5675 5117 3534
16 2 17 37 41 67 880 5611 6508 4603 7905
17 2 17 31 43 67 8281 1293 715 9418 7524
18 7 19 31 47 71 8967 4537 1379 6726 293
19 2 17 31 41 71 7159 4306 8544 3987 6051
20 5 13 23 53 71 4571 7161 5815 2169 1668
21 5 17 23 47 67 2136 7447 3463 8592 8552
22 2 17 29 41 59 6831 2721 8182 9217 6737
23 5 13 23 53 61 214 224 2515 8230 2270
24 2 11 37 53 71 1710 8354 4412 5564 1932
25 2 19 29 47 59 6107 1528 7068 9905 6071
26 2 17 37 41 67 3547 6665 9225 9037 1126
27 3 13 31 43 71 6216 9279 1008 8278 535
28 2 13 23 47 59 5687 4414 1564 5152 4373
29 2 19 29 41 61 8707 573 8542 532 7263
30 5 17 29 41 61 7021 1916 5574 7731 6832
31 2 13 37 41 67 3730 4374 8107 7340 5678
32 3 17 31 47 61 8929 1907 4158 34 1179
33 3 13 37 47 71 6613 1067 4793 6657 2783
34 3 19 23 47 67 1543 9002 4967 5965 8080
35 5 17 29 47 59 9609 4790 7790 591 5088
36 2 19 37 47 71 8021 5751 7162 2391 4904
37 7 11 23 53 61 5560 3845 2761 6575 8338
38 7 17 29 41 71 7949 4037 2131 4362 839
39 2 11 23 47 71 3149 2611 8706 4887 5668
40 3 19 29 53 67 3598 4437 5037 7640 6202
41 3 17 29 43 67 7379 6750 6176 6310 1683
42 5 11 31 43
59 5158 6794 9162 8886 2231
43 5 17 23 53 71 4980 1412 7839 8033 7595
5
- 50 -
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
