Write an implementation of addition and multiplication of nonnegative integers, stored in binary, in C++. Make your functions have the following contracts and headings.
// sum(A,m,B,n,C,k) stores the sum of integers A and B into array C. // // All integers are stored as arrays of bits, with the least // significant bit stored at index 0. // // Array A has length m. // Array B has length n. // Array C must have at least n+1 cells available. // Parameter k is an out-parameter, and it is set to the number of // bits in C. void sum(BIT A[], int m, BIT B[], int n, BIT C[], int& k); // product(A,m,B,n,C,k) stores the product of integers A and B into // array C. // // All integers are stored as arrays of bits, with the least // significant bit stored at index 0. // // Array A has length m. // Array B has length n. // Array C must have at least m+n cells available. // Parameter k is an out-parameter, and it is set to the number of // bits in C. void product(BIT A[], int m, BIT B[], int n, BIT C[], int& k);For type BIT, use char. So you should write
typedef char BIT;
The multiplication algorithm that you learned in grade shool has you write down all of the intermediate products before adding them all up. It is not necessary to do that. Just accumulate the sum as you generate each intermediate product. Be sure to shift over an appropriate amount. You will find it convenient if you design a helper addition function that computes x*2^z + y, where x and y are integers stored in arrays and z is a nonnegative integer (just an int) giving the amount to shift x to the left before adding. That function can be used to perform addition (by setting z = 0) and as a tool for doing multiplication.
An easy way to do these tests is just to initialize some arrays in your program. For example, write
BIT A3[] = {1,0,0,1,0,1}; BIT B3[] = {0,0,1,1,1,1,1,0,1};to intialize arrays A3 and B3 to the binary numbers 101001 and 101111100, respectively. Notice that the numbers are written least significant bit first.
Print the numbers, along with their sum and product. Print them in standard form, with the least significant bit at the right side. Check the answers!!!
Report time spent actually working on the problem, not counting time in between work sessions where you are doing something else.
3675 Assn 1 your nameBe sure to include your name in the program.
The body of the email message should report your account of time spent, in hours. For example,
Learning language: 0 hr Development: 2.5 hr Debugging/testing: 1.3 hrOf course, the times shown here are only examples, and might not be representative of the times that you use.