每日一题 No.17 a+b(位操作符)

来源:互联网 发布:巨人网络a股上市时间 编辑:程序博客网 时间:2024/06/05 19:03

本题要求:

昨天学了位操作符,进来让我们来用位操作符写2个数相加吧,给定2个数a,b,计算a+b

输入格式:

a b

输出格式:

a+b的值

输入样例:

155 152

输出样例:

307

解题思路 :

就拿1+1为例
1 ^ 1 如下图所示

Created with Raphaël 2.1.0000100010000

1 & 1 如下图所示

Created with Raphaël 2.1.0000100010001

1 << 1 如下图所示

Created with Raphaël 2.1.0000100010010

0 ^ 2 如下图所示

Created with Raphaël 2.1.0000000100010

0 & 2 如下图所示

Created with Raphaël 2.1.0000000100000

跳出递归函数。
得到s = 2

代码 :

#include <iostream>using namespace std;  int add(int a, int b) {    if (b == 0) {        return a;    }    int s = a ^ b;    int c = (a & b) << 1;    return add(s, c);}int main() {    int a, b;    cin >> a >> b;    cout << add(a, b) << endl;    return 0;  }  
0 0
原创粉丝点击