Операции над многословными операндами

СПбГУАП

Кафедра № 46

 

Отчёт защищён:

Преподаватель:

 

«Операции над многословными операндами».

Отчёт по лабораторной работе № 5 по курсу «ПЯВУ».

 

 

Работу выполнил

студент группы № 4568: Вихров Игорь.

 

Санкт-Петербург. 2006 год.

Постановка задачи

 

Написать функцию алгебраического сложения двух целых чисел, каждое из которых представлено массивом байтов. Первый байт массива содержит код знака числа: 0 - ‘+’, 255 - ‘-‘, а остальные байты- значащие двоичные цифры числа.

 

Описание входных и выходных данных

bool lab5 (unsigned char *m1, unsigned char *m2, unsigned char *m3, int n) - оператор прототипа функции, которая возвращает true, если сумма поместилась в n-элементах массива m3.

Входные данные:

unsigned char *m1 – указатель на первое слагаемое;

unsigned char *m2 – указатель на второе слагаемое;

Выходные данные:

unsigned char *m3 – указатель на алгебраическую сумму двух введённых чисел.

 

Набор тестов.


Входные данные:

Первое слагаемое: 00 CC 4F A3 D7 95

второе слагаемое: 00 E4 7D C6 BB 3A

 

Первое слагаемое: 00 23 CB 92 C9 6E

второе слагаемое: 00 12 B5 61 D3 E5

 

Выходные данные:

Функция возвратит false

 

 

Функция возвратит true, сумма = 00 36 80 F4 9D 53

 


Описание алгоритма

Если числа отрицательные (первый байт = 0xFF), переведём их в дополнительный код. С помощью цикла по байтам будем складывать эти числа, фиксируя при этом переполнение (0x01) и добавляя его к следующей сумме.

Текст программы

#include <string.h> using namespace std;