Page 11 - М.Ю. Барышникова, А.Ф. Деон, А.В. Силантьева - СКОРОСТНЫЕ СВОЙСТВА АЛГОРИТМОВ СЛОЖЕНИЯ И ВЫЧИТАНИЯ ЦЕЛЫХ ЧИСЕЛ ПРОИЗВОЛЬНОГО РАЗМЕРА

c[0] = 10 - c[0]; //формирование отрицательного результата
for( int i = 1; i < m1; i++ ) c[i] = 9 - c[i];
c[m1] = 45; //знак ’-’
В инструкции
c
[0]
= 10
c
[0]
используются две операции. В заго-
ловке цикла выполняется одна операция для
int i =
1.
На каждой ите-
рации затрачивается по одной операции на проверку условия
i < m
1
и по две операции на увеличение индекса
i
+ +
.
В теле цикла необ-
ходимы три операции на выполнение инструкции
c
[
i
]
= 9
c
[
i
]
.
По
окончании цикла необходимо выполнить две операции для реализации
инструкции
c
[
m
1]
= 45
:
W
BinarySubtract
4
= 2 + 1 +
m
2
X
i
=1
(1
+ 2 + 3) + 2 = 5 + 6(
m
2)
= 6
m
1
.
Итак, для выполнения функции
BinarySubtract( )
необходимо сле-
дующее количество операций:
BS
min
=
=
W
BinarySubtract
1
min
+
W
BinarySubtract
2
min
+
W
BinarySubtract
3
min
+
W
BinarySubtract
4
=
= 13 + 12
n
9
+ 1 + 6
n
1
= 4 + 18
n
;
BS
max
=
=
W
BinarySubtract
1
max
+
W
BinarySubtract
2
max
+
W
BinarySubtract
3
max
+
W
BinarySubtract
4
=
= 9 + 5
n
+ 14
n
11
+ 3 + 6
n
1
= 25
n
1
.
Сложение произвольных целых чисел.
В операции сложения мо-
гут участвовать как положительные, так и отрицательные числа. Сама
операция обозначена явно как ‘+’. Знаки чисел скрыты в старших
байтах соответствующих массивов. В табл. 1 показано, какую следу-
ет производить операцию над беззнаковыми числами
c
=
a
+
b
,
если
известны знаки чисел
a
и
b
.
Таблица 1
Выполняемые действия при сложении в зависимости от знаков слагаемых
a
b
Беззнаковая операция
+
+
c
=
a
+
b
+
c
=
a
b
+
c
=
b
a
c
=
(
a
+
b
)
Ниже приведена функция
BigIntAdd
( ),
которая управляет процес-
сом сложения произвольных целых чисел с произвольными знаками
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012
49