考虑把两个n位二进制整数加起来的问题,这两个整数分别存储在两个n元数组a和b中。这两个整数的和应按二进制形式存储在一个n+1元数组c中,请给出该问题的形式化描述,并写出代码(见算法导论第三版 习题2.1-4)
1 #include<iostream> 2 #include<string> 3 #include<cstring> 4 using namespace std; 5 /** 6 * @desc binary add 7 * 8 */ 9 void binAdd(int a[], int b[], int c[]) { 10 int key, flag=0; 11 for(int i=0;i<5;i++) { 12 key = a[i] + b[i] + flag; 13 c[i] = key % 2; 14 if(key > 1) 15 flag = 1; 16 else 17 flag = 0; 18 } 19 if(flag == 1) 20 c[5] = 1; 21 } 22 int main() { 23 int a[5] = {1, 0, 1, 0, 1}; 24 int b[5] = {1, 1, 1, 0, 1}; 25 int c[6] = {0}; 26 binAdd(a, b ,c); 27 for(int i = 0; i < 6; i++) 28 cout<<c[i]<<endl; 29 }