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

#
include <conio.h> //_getch
#
include <iostream>
using namespace std;
#
include <string.h> //strlen
#
include "BinaryByte.h"
#
include "BinaryPrint.h"
#
include "BinaryMass.h"
inline int BinaryAlign( unsigned char* z, int nz, int k )
{
int n = nz + k; //новое количество байт в числе z
unsigned char s = z[nz-1]; //запомнить знак числа
for( int j = nz-1; j < n-1; j++ ) z[j] = 0; //выравнивание
z[n-1] = s; //приписать знак числа
return n;
}
int BinaryAlign2( unsigned char* u, int nu,
unsigned char* v, int nv )
{
int k = nu - nv; //число выравнивающих нулей
if( k > 0 ) //в числе a больше цифр
return BinaryAlign( v, nv, k ); //выравнивание числа v
if( k < 0 ) //в числе b больше цифр
return BinaryAlign( u, nu, -k ); //выравнивание числа u
return nu; //равное количество цифр в числах u, v
}
//————————————————————–
void main( void )
{
char sa[256]; //символьный буфер целого числа a
cout « "sa = ";
cin » sa; //символьный ввод числа a
unsigned char a[256];
BinaryMass( a, sa ); //преобразование в байтовый вид
int na = strlen( sa ); //количество цифр в числе a
BinaryPrint( a, na ); //печать a
char sb[256]; //символьный буфер целого числа b
cout « "sb = ";
cin » sb; //символьный ввод числа b
unsigned char b[256];
BinaryMass( b, sb ); //преобразование в байтовый вид
int nb = strlen( sb ); //количество цифр в числе b
BinaryPrint( b, nb ); //печать b
int m = BinaryAlign2( a, na, b, nb ); //выравнивание чисел
na = m;
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012
41