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

5
+ 9 = 14
),
то используется обратный порядок расположения де-
сятичных цифр в массиве, что упрощает реализацию сложения про-
стым заполнением единицы в следующем старшем байте результата.
Аналогично, поскольку в процессе вычитания положительных чисел
возможно появление отрицательного результата (например,
(
+5)
(
+9) =
4)
,
старший байт массива числа должен содержать код
знака ‘+’ или ‘–‘.
Ниже представлены функции:
BinaryByte
( ) —
для двоичного пред-
ставления цифр числа;
BinaryPrint
( ) —
для печати байтового массива
числа, а также
BynaryMass
( ),
в которой символьный массив числа ко-
пируется в байтовый массив, представляя число в обратном порядке:
void BinaryByte( unsigned char z )
{
unsigned char b = 0x80;
while( b > 0 )
{ (
z & b ) == 0 ? cout « ’0’ : cout « ’1’;
b »= 1;
}
}
void BinaryMass( unsigned char* a, char* sa )
{
int n = strlen( sa );
for( int i = 1; i < n; i++ )
a[n-1-i] = (unsigned char)sa[i] - 48; //цифровой элемент
a[n-1] = (unsigned char) sa[0]; //знак числа
}
void BinaryPrint( unsigned char* u, int nu )
{
for( int i = 0; i < nu; i++ ) //печать u
{
BinaryByte( u[i] );
cout « " ";}
cout « endl;
}
Прежде чем непосредственно выполнять операции сложения или
вычитания двух чисел, необходимо, чтобы они содержали одинаковое
количество цифр, например,
(
+15) + (+09) = +24. Ниже приведена программа AI03, в которой
функции
Align
( )
и
Align2
( )
выполняют выравнивание количества
цифр в двух числовых массивах, дополняя нули в старших разрядах
числа с меньшим количеством цифр:
//
Program AI03 (Win32)
//
Выравнивание байтовых чисел в обратном порядке
40
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012