Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы модулярной арифметики. Практикум
.pdf
Практическая работа 5
p
p
p
p
2
3
p
4
5
A
A
2
A3A
A
4
44 7 17 29 43 67 8768 7500 3293 679 7901
45 2 19 29 43 71 3585 117 4814 9329 7592
46 3 19 29 43 59 4265 6681 4688 3782 1694
47 3 17 23 41 67 7812 163 4765 5121 2291
48 2 19 37 47 59 3050 1193 9268 184 6571
49 2 13 37 47 71 2456 2542 5191 8490 837
50 7 17 37 53 67 8049 6644 81 4616 8188
51 3 19 23 43 61 9346 159 7218 1750 3595
52 2 11 31 43 67 475 1663 6756 1420 4683
53 2 17 29 47 67 731 7825 5517 5945 6268
54 7 11 31 43 71 9530 8957 6871 7767 9039
55 3 17 37 43 71 5471 197 8602 7715 9395
56 3 17 23 43 61 3730 4787 5271 5479 6776
57 5 11 37 53 61 6811 6326 7196 3889 1976
58 3 13 23 41 71 1769 8102 4112 1025 4087
59 3 17 23 47 67 9180 7170 4689 6752 4946
60 2 19 31 43 67 7260 8221 8140 9249 2944
61 3 11 29 53 61 9770 3485 6821 7706 2353
62 3 17 29 47 59 3445 1527 5103 2205 4381
63 7 19 37 41 71 1066 2831 6287 2003 1602
64 3 13 37 41 67 4993 750 5809 275 5925
65 3 13 37 47 71 1730 4674 1560 5933 9497
66 2 13 29 43 61 2139 44 5885 8944 6210
67 2 13 37 47 61 992 1462 25 825 8935
68 5 19 37 43 71 3705 9172 8811 9825 1692
69 5 17 29 47 59 1088 7914 1403 4161 8925
70 5 13 29 41 61 7709 1891 3199 5919 1468
71 7 13 29 47 67 5828 582 4019 3865 866
72 7 17 37 43 71 5432 6048 6035 9569 8048
73 7 17 23 41 71 4342 1142 4177 810 3334
74 5 17 37 53 71 5674 7528 5756 5440 2068
75 5 13 37 47 61 1398 666 6236 4266 5111
76 5 13 31 53 61 923 9592 2463 3402 9598
77 7 11 29 47 59 4286 9246 4249 127 1480
78 2 13 31 41
67 6167 9589 7022 2790 192
79 3 11 23 43 61 2174 3293 265 7079 1930
5
- 51 -

Спутниковые и радиорелейные системы передачи данных
p
p
p
p
2
3
p
4
5
A
A
2
A3A
4
80 5 17 31 43 71 2525 7656 6603 8527 1444
81 2 11 37 47 67 3362 9572 9459 9045 8040
82 3 17 37 43 61 205 4463 1653 8824 8567
83 3 19 31 47 61 7077 7183 3174 592 6
84 2 11 31 41 67 610 2635 9410 4637 5358
85 7 17 31 47 71 8911 1876 1755 5568 5865
86 3 19 29 53 59 4746 2846 2238 9298 653
87 3 13 23 47 67 7151 3805 6329 3894 9479
88 5 17 37 47 71 3558 2477 7821 8754 5760
89 2 17 29 43 61 1494 3400 640 3588 7315
90 2 19 29 41 71 2266 6524 2278 2506 8931
91 5 17 29 53 61 1282 3428 4381 4836 1791
92 7 13 29 43 71 8058 6475 9854 2393 3244
93 5 11 37 53 59 3895 4576 1457 8277 8176
94 5 13 31 53 59 2308 9639 1563 6085 4893
95 3 19 23 41 59 6751 2369 8971 7348 713
96 2 19 37 43 61 846 4845 4972 9603 4678
97 7 13 23 47 61 1777 529 10 1180 6606
98 2 11 23 53 71 7321 5723 4090 4780 9365
99 5 19 23 43 71 1825 8627 5390 6525 6946
100 2 19 31 41 71 6022 2571 6612 1747 236
A
5
2. Перевести в СОК по заданным основаниям p1, p2, p3, p4,
p5 двоичные числа B1, B2, B3, используя промежуточные
таблицы перевода.
p
1 7 19 23 43 59 1100011 1100101 1100011
2 3 13 37 41 71 1000110 1010000 1001100
3 2 17 31 43 61 1111100 1101011 1101000
4 5 17 37 47 71 1010101 1001100 1111101
5 2 13 37 47 61 1011111 1011111 1000111
6 3 13 29 41 71 1000000 1111100 1101111
7 2 17 37 53 71 111101 0 1010011 1011100
8 5 11 29 53 59 1 011110 110 1111 1010001
9 2 13 37 41 67 1001000 1011010 1010101
p
p
2
p
3
p
4
5
В
В
В
2
- 52 -
3

Практическая работа 5
p
p
p
2
p
3
p
4
5
В
В
В
2
3
10 2 11 37 41 67 1001010 1010101 1001110
11 5 11 37 41 67 1010011 1011010 1010111
12 7 17 37 43 61 1100000 1001010 1011011
13 7 11 31 41 61 1110101 1000001 1110010
14 2 19 23 41 59 1011111 1001001 1100110
15 2 11 37 41 61 1100010 1001110 111 0011
16 2 17 37 41 67 1100010 1101010 1101001
17 2 17 31 43 67 11110 10 1001000 1111 001
18 7 19 31 47 71 11110 10 1000110 1010011
19 2 17 31 41 71 1110111 1111101 11100 11
20 5 13 23 53 71 1000101 1100001 110 1111
21 5 17 23 47 67 1001000 110 1111 11111 01
22 2 17 29 41 59 1001110 1110 110 1110000
23 5 13 23 53 61 1011000 1101011 110 1110
24 2 11 37 53 71 1101010 1010111 1010110
25 2 19 29 47 59 1011010 1001011 1010101
26 2 17 37 41 67 1110 110 1001101 111 0011
27 3 13 31 43 71 1010101 1110100 1100011
28 2 13 23 47 59 1001110 1101111 1001000
29 2 19 29 41 61 1001010 1100111 1010101
30 5 17 29 41 61 1110100 1100000 1110000
31 2 13 37 41 67 1010000 1101100 1100111
32 3 17 31 47 61 1001101 1001100 1000011
33 3 13 37 47 71 1101100 1010000 1000010
34 3 19 23 47 67 1101001 11110 10 1111100
35 5 17 29 47 59 1110001 1110100 1111100
36 2 19 37 47 71 1110000 1100001 1010110
37 7 11 23 53 61 1001011 1111 010 1101000
38 7 17 29 41 71 111111 0 1101010 111 0110
39 2 11 23 47 71 1111 010 1101011 1110010
40 3 19 29 53 67 1110000 1001011 1001010
41 3 17 29 43 67 1010010 1110110 1101000
42 5 11 31 43 59 1010000 1001000 1011011
43 5 17 23 53 71 1100010 1011000 1101101
44 7 17 29 43 67 1011001 1011111 1110000
45 2 19 29 43 71 1001001 1000011 1110100
- 53 -

Спутниковые и радиорелейные системы передачи данных
p
p
p
2
p
3
p
4
5
В
В
В
2
3
46 3 19 29 43 59 1110101 1110100 11110 01
47 3 17 23 41 67 1100010 1010111 1000000
48 2 19 37 47 59 1001100 1111100 1110101
49 2 13 37 47 71 1001010 1011100 1100011
50 7 17 37 53 67 1000001 1111000 1001100
51 3 19 23 43 61 1000101 1111010 1001110
52 2 11 31 43 67 1100110 1000101 11 00111
53 2 17 29 47 67 1101111 1110001 1011100
54 7 11 31 43 71 1 001111 1100010 1001010
55 3 17 37 43 71 1101101 1001011 11110 00
56 3 17 23 43 61 1100011 1011100 1010010
57 5 11 37 53 61 1110100 1011100 1101100
58 3 13 23 41 71 1011001 1001001 1010011
59 3 17 23 47 67 1110010 1000010 11110 00
60 2 19 31 43 67 1100000 111111 0 1010110
61 3 11 29 53 61 1010000 1110101 1000011
62 3 17 29 47 59 1000000 1010010 1001011
63 7 19 37 41 71 1000100 1100101 1000111
64 3 13 37 41 67 1110111 1111011 1100101
65 3 13 37 47 71 110 1110 1101101 111 0110
66 2 13 29 43 61 1100000 1111111 1010101
67 2 13 37 47 61 1110010 1110010 1001010
68 5 19 37 43 71 1010000 1101011 1101010
69 5 17 29 47 59 1000010 1011100 1110100
70 5 13 29 41 61 1100100 1011100 1011100
71 7 13 29 47 67 1110010 1110001 1001100
72 7 17 37 43 71 1001101 1100100 1110100
73 7 17 23 41 71 1011000 1000000 11110 01
74 5 17 37 53 71 1011100 1100001 1101010
75 5 13 37 47 61 1100010 1010011 1110010
76 5 13 31 53 61 1000111 1000101 1110000
77 7 11 29 47 59 1001100 1000010 1001110
78 2 13 31 41 67 1000100 1110110 1010100
79 3 11 23 43 61 1010010 1111011 111011 0
80 5 17 31 43 71 1000110 1101000 1001100
81 2 11 37 47 67 1111 010 1101100 1010110
- 54 -

Практическая работа 5
p
82 3 17 37 43 61 1100101 1110111 1001110
83 3 19 31 47 61 1101001 1110 110 1000001
84 2 11 31 41 67 1010111 1110000 1101101
85 7 17 31 47 71 10 01111 1000101 1001010
86 3 19 29 53 59 1000010 1101101 1001010
87 3 13 23 47 67 1111101 1100011 11 00111
88 5 17 37 47 71 1001110 1011111 1101011
89 2 17 29 43 61 1011101 1100001 1001101
90 2 19 29 41 71 1111100 1010011 1100110
91 5 17 29 53 61 1011101 1111101 1100100
92 7 13 29 43 71 1000100 1100001 1111000
93 5 11 37 53 59 1001010 1100001 1000101
94 5 13 31 53 59 1101111 1110001 1101000
95 3 19 23 41 59 1001101 1000101 1010111
96 2 19 37 43 61 110 0111 1110001 1101000
97 7 13 23 47 61 1101001 1011001 1010011
98 2 11 23 53 71 1011011 1100000 1101111
99 5 19 23 43 71 1100110 1011101 1101101
100 2 19 31 41 71 1110100 1001011 1011011
p
p
2
p
3
p
4
5
В
В
В
2
3
Контрольные вопросы
1. Опишите метод прямого перевода чисел из позиционной
системы счисления в СОК.
2. Опишите метод быстрого поциферного перевода чисел
из десятичной системы счисления в СОК.
3. Опишите метод быстрого поциферного перевода чисел
из двоичной системы счисления в СОК.
- 55 -

Спутниковые и радиорелейные системы передачи данных
Цель занятия: изучение обобщенной позиционной системы
счисления.
Знания и умения, приобретаемые студентом в результате осво-
ения темы, формируемые компетенции или их части: ПК-1, ПК-7.
В результате освоения темы обучающийся должен
• знать: назначение ОПСС, методы перевода чисел из
СОК в ОПСС, из ОПСС в СОК, сравнения чисел в ОПСС,
расширения диапазона СОК, нахождение остатка от деления на 2 в СОК.
• уметь: переводить числа из СОК в ОПСС, из ОПСС в
СОК, сравнивать числа в ОПСС, расширять диапазон
СОК, находить остаток от деления на 2 в СОК.
• владеть: знаниями, умениями и навыками работы с числами в ОПСС.
Теоретическая часть
Все операции над неотрицательными целыми числами в СОК
можно разделить на два класса:
1. Модулярные, такие как сложение, вычитание и умноже-
ние. Эти операции хорошо распараллеливаются. Условно эти операции называются «хорошими операциями».
2. Немодульные операции. Эти операции считаются плохо
пригодными для распараллеливания в СОК. К этой группе операций относятся операции деления с остатком,
сравнения чисел, обратный перевод из СОК в ПСС и некоторые другие.
Непосредственно в СОК немодульные операции выполнять
сложно. Однако, сложность задачи можно понизить, если использовать промежуточное представление чисел, называемое обобщенной позиционной системой счислении (ОПСС, MRS (англ.).
Обобщенная позиционная система счисления – это такая
форма представления целых чисел, в которой для каждого позиционного разряда числа может использоваться свое основание
(своя система счисления).
- 56 -

Практическая работа 6
Рассмотрим разложение некоторого целого числа A:
A = a1 + a2*p1 + a3*p1*p2 + a4*p1*p2*p3 +…,
где a1, a2, …, an – цифры числа A в ОПСС, p1, p2, p3, … – основания ОПСС (в частном случае, если p1 = p2 = p3 =…, получается
обычная позиционная система счисления).
Пример (для p1 = 3, p2 = 5, p3 = 7).
A = 80 = 2 + 1*3 + 5*3*5 = 2 + 1*p1 + 5*p1*p2.
Цифрами числа A = 80 в ОПСС являются a1 = 2, a2 = 1, a3 = 5.
Еще раз выпишем разложение X в ОПСС.
A = a1 + a2*p1 + a3*p1*p2 + a4*p1*p2*p3 +… =
= a1 + p1*(a2 + p2*(a3 + p3*(a4 +…)…)
Данная выкладка дает вполне очевидный способ нахождения
цифр числа X в ОПСС:
Y1 = A, a1 = Y1 mod p1,
Y2 = (Y1 – a1):p1, a2 = Y2 mod p2,
Y3 = (Y2 – a2):p2, a3 = Y3 mod p3,
Y4 = (Y3 – a3):p3, a4 = Y4 mod p4, …
Пример (для p
= 3, p2 = 5, p3 = 7).
1
Пусть A = 76, тогда
Y1 = 76, a1 = 76 mod 3 = 1,
Y2 = (76 – 1):3 = 25, a2 = 25 mod 5 = 0,
Y3 = (25 – 0):5 = 5, a3 = 5 mod 7 = 5.
То есть цифрами числа A = 76 в ОПСС будут a1 = 1, a2 = 0, a3 = 5.
Заметим, что в данном способе расчета цифр числа A в ОПСС
используются только операции вычитания и деления нацело,
т. е. все промежуточные операции можно проводить в СОК,
а результат операции mod – это по сути и есть соответствующий
остаток представления числа в СОК.
Пример (для СОК с основаниями p1 = 3, p2 = 5, p3 = 7).
Пусть A = 17 = (2, 2, 3).
Y1 = (2, 2, 3),
a1 = (2, 2, 3) mod p1 = 2.
Y2 = ((2, 2, 3) – 2):p1 = ((2, 2, 3) – (2, 2, 2)):(0, 3, 3) =
= (0, 0, 1)*inv(0, 3, 3) = (0, 0, 1)*(–, 2, 5) = (–, 0, 5).
После отбрасывания неопределенного разряда:
- 57 -

Спутниковые и радиорелейные системы передачи данных
Y2 = (0 mod 5, 5 mod 7).
a2 = (0 mod 5, 5 mod 7) mod p2 = 0.
Y3 = ((0,5) – 0):p2 = ((0, 5) – (0, 0)):(0 mod 5, 5 mod 7) =
= (0, 5)*inv(0, 5) = (0, 5)*(–, 3) = (–, 1).
После отбрасывания неопределенного разряда:
Y3 = 1 mod 7 = 1.
a3 = 1 mod p3 = 1.
То есть цифрами числа A = (2, 2, 3) в ОПСС будут a1 = 2,
a2 = 0, a3 = 1.
Из ОПСС далее легко переводить числа в ПСС.
Действительно, A = 2 + 0*p1 + 1*p1*p2 = 2 + 0*3 + 1*3*5 = 17.
Числа A и B, заданные своими цифрами в ОПСС, легко срав-
нивать между собой.
A = B, если все цифры обоих чисел в ОПСС равны.
A > B, если при просмотре цифр числа A от старшей к млад-
шей первой найдется цифра, большая соответствующей цифры
числа B.
A < B, если при просмотре цифр числа A от старшей к младшей первой найдется цифра, меньшая соответствующей цифры
числа B.
Данные правила являются естественными и используются,
например, для сравнения чисел в обычных позиционных системах счисления.
Пример (для p1 = 3, p2 = 5, p3 = 7).
A = 80 = 2 + 1*p1 + 5*p1*p2, a1 = 2, a2 = 1, a3 = 5.
B = 76 = 1 + 0*p1 + 5*p1*p2, b1 = 1, b2 = 0, b3 = 5.
Сравниваем между собой цифры чисел A и B в ОПСС.
1) a3 = b3 – сравнение продолжаем;
2) a2 > b2 – сравнение завершено с результатом A > B.
ОПСС позволяет, кроме того, выполнить операцию расширения
диапазона СОК, то есть находить значение числа A в другой СОК,
с основаниями, возможно отличающимися от исходной СОК.
Для этого достаточно после нахождения цифр числа A в
ОПСС с основаниями, формально совпадающими с основаниями исходной СОК, произвести сборку числа A в СОК с новыми
основаниями. Предполагается, что значения цифр a1, a2, …, an
- 58 -

Практическая работа 6
ОПСС-разложения A и значения оснований p1, p2, p3, …, pn исходной СОК известны в новой СОК (на самом деле – это легко
выполняемое условие).
Пример (для СОК p1 = 3, p2 = 5, p3 = 7).
A = 17 = (2, 2, 3)
Цифрами числа A = (2, 2, 3), как было вычислено ранее,
в ОПСС будут a1 = 2, a2 = 0, a3 = 1.
То есть A = 2 + 0*p1 +1*p1*p2.
Найдем остаток от деления числа A = (2, 2, 3) на 2.
Для этого достаточно знать остатки от деления на 2 величин
p1 = 3, p1*p2 = 3*5 = 15, и цифр a1 = 2, a2 = 0, a3 = 1 числа A в
ОПСС.
3 mod 2 = 1,
15 mod 2 = 1,
2 mod 2 = 0,
0 mod 2 = 0,
1 mod 2 = 1.
Соберем теперь остаток от деления на 2 от всего числа A,
пользуясь правилами выполнения арифметических операций
сложения и умножения в СОК по модулю 2.
A mod 2 = ((2 mod 2) + (0 mod 2) * (p1 mod 2) +
+ (1 mod 2) * (p1*p2 mod 2)) mod 2 =
= (0 + 0*1 + 1*1) mod 2 = 1 mod 2 = 1.
Был рассмотрен случай нахождения остатка от деления на 2
произвольного числа в СОК. Этот частный случай на самом деле
очень интересен тем, что может быть существенно ускорен.
Действительно, если все основания СОК отличны от 2 или
нечетные, то остаток от их деления на 2 равен 1, остаток от любого числа их произведений тоже будет равен 1 (произведение
любого числа нечетных чисел – есть число нечетное).
Это значит, что в формуле сборки числа A в ОПСС все операции умножения будут умножениями на 1, что позволяет при
сборке отказаться от умножения вообще. То есть для нахождения остатка от деления на 2 любого числа, представленного в
СОК своими остатками от деления на набор взаимно простых
оснований, каждое из которых есть число нечетное – достаточно
- 59 -

Спутниковые и радиорелейные системы передачи данных
перевести число в ОПСС и сложить остатки от деления на 2
цифр ОПСС этого числа (фактически – это младший бит каждой
из цифр числа в ОПСС). Более того, битовое сложение по модулю 2 – это есть операция XOR, которая выполняется быстро.
При большом количестве оснований СОК можно получить дополнительное ускорение вычисления последовательности XOR,
если использовать технику бинарного сдваивания (при условии
использования ЭВМ параллельной архитектуры).
Обратный перевод из ОПСС в СОК тоже возможен.
Представим в СОК с основаниями p1, p2, .., pn значения всевозможных «цифр»-разрядов ОПСС-числа, например для СОК с основаниями p1 = 3, p2 = 5, p3 = 7 – это будут цифры: 0, 1, 2, 3, 4, 5, 6.
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
Вычислим в СОК значения p1, p1*p2, p1*p2*p3 и т. д.
Например, для СОК с основаниями p1 = 3, p2 = 5, p3 = 7
p = 3 p2 = 5 p3
p
= 3 0 3 3
1
= 3*5 = 15 0 0 1
p
1*p2
Теперь для нахождения значения в СОК любого ОПСС-числа
A = a1 + a2*p1 + a3*p1*p2 + a4*p1*p2*p3 + …
достаточно выписать из соответствующих таблиц значения a1,
a2,…, значения p1, p1*p2, … и «перевычислить» значение A в СОК.
Пример (для СОК с основаниями p1 = 3, p2 = 5, p3 = 7).
Пусть в ОПСС A = <1, 4, 0>.
Из таблицы цифр находим
1 = (1, 1, 1)
- 60 -
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
