На втором этапе выполняется инструкция цикла:
int m1=m-1;
for( int i = 0; i < m1; i++ ) //цикл вычитания байт
{
signed char d = a[i] - tranzit - b[i];
if( d < 0 ) { d = 10 + d; tranzit = 1; }
else tranzit = 0;
c[i] = d;
}
До цикла выполняется одна инструкция, реализуемая за две опера-
ции
int m
1
=
m
−
1
.
В заголовке цикла выполняется одна инструкция
int i
= 0
.
На каждой итерации выполняются одна операция проверки
условия
i < m
1
и две операции на увеличение и запоминание индекса
i
++
.
Кроме того, в каждой итерации используются пять операций на
реализацию поразрядного сложения
signed char d = a[i]- tranzit - b
[
i
]
.
Инструкция альтернативного условия
if
(
d <
0)
{
d
= 10 +
d
;
tranzit
= 1; }
else tranzit =
0
занимает одну операцию на проверку условия.
При истинности условия выполняются три операции на реализацию
d
= 10 +
d
;
tranzit
= 1. При ложном условии выполняется одна опе-
рация
tranzit
= 0. В конце тела цикла находится инструкция
c
[
i
]
=
d
с
выполнением в две операции. Таким образом, на втором этапе выпол-
няется следующее количество операций:
W
BinarySubtract
2
min
=
= 3 +
m
−
2
X
i
=0
(3
+ 5 + 1 + 1 + 2) = 3 + 12(
m
−
1)
= 12
m
−
9;
W
BinarySubtract
2
max
=
= 3 +
m
−
2
X
i
=0
(3
+ 5 + 1 + 3 + 2) = 3 + 14(
m
−
1)
= 14
m
−
11
.
На третьем этапе выполняется инструкция условия
if
(
tranzit ==
0)
{
c
[
m
1]
= 43
;
returnm
;
}
.
При истинности условия
tranzit ==
0
реали-
зуется одна операция. При ложном условии выполняются три опера-
ции:
W
BinarySubtract
3
min
= 1;
W
BinarySubtract
3
max
= 3
.
На четвертом этапе происходит учет транзитной единицы для от-
рицательного результата:
48
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012