ISSN 2305-5626. Вестник МГТУ им. Н.Э. Баумана: электронное издание. 2013
8
5,2 max
5,1 max
5,2 max
W W W
=
+
=
(
) (
) (
)
3
2 2
2 5
2 .
na nb
na nb
na nb
= + − + + − = + −
Шестой этап завершает функцию
ByteBitMult
( ). Инструкция
m = m + 1
определяет место знака в массиве результата, затрачивая
две операции. Следующая инструкция альтернативного условия
if
(
a
[
na – 1
]
== b
[
nb – 1
]
) c
[
m
]
= 43;
else c
[
m
]
= 45
ставит код знака (пять
операций), выход из функции
return m+1
занимает одну операцию:
6
2 5 1 8.
W
= + + =
Функция
ByteBitMult
( ) завершена. Общее количество ее опера-
ций определяется следующим образом:
min
1
2
3
4 min
5 min
6
ByteBitMult
W W W W W W W
= + + + + + =
(
)
(
)
(
)
5
3 5
2 4
1 6 16
2
2 8
2
na nb
nb
na nb na nb
= + + − + + − − + + + + − + =
(
) (
) (
)
15 8
2 1 16
1
na nb
na nb
= + + − + − +
− =
8 7 16
;
na nb na nb
= − + + ⋅
max
1
2
3
4 max
5 max
6
ByteBitMult
W W W W W W W
= + + + + + =
(
)
(
) (
)
3 5
2 4 24
1 5
2 8
na nb
na nb
na nb
= + + − + +
− + + − + =
3 14 10 24
na nb na nb
= − + + ⋅
.
Деление.
В представленной далее программе
DI01
проводится де-
ление
/
c a b
=
целых десятичных чисел
a
и
b
в байтовом представле-
нии. Числа вводятся со знаком с клавиатуры в функции
InputAB
( )
[2].
В подключаемых файлах
#include "SingleMultiply.h"
и
#include
"SingleSubtract.h"
находятся функции
SingleMultiply
( ) и
SingleSub-
tract
( ), которые используются в определении частного. Их тексты
приведены в [2]. Вычисление частного проводится по алгоритму ди-
хотомического поиска множителя с помощью функций
DichMult
( ) и
DMultiplier
( ), находящихся в подключаемых файлах
#include
"DichMult.h"
и
#include "DMultiplier.h"
, тексты которых также пред-
ставлены в [2]. Функция деления
ByteBitDiv
( ), чей текст будет пока-
зан далее, находится в подключаемом файле
ByteBitDiv.h
:
// Program DI01 (Win32)
// Деление целых байтовых чисел в обратном порядке
#include <conio.h> // _getch
#include <iostream>
using namespace std;
#include <string.h> // strlen
#include "InputAB.h"
1,2,3,4,5,6,7 9,10,11