二进制加法

考虑把两个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 }
原文地址:https://www.cnblogs.com/sanfeng/p/4374196.html