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

    xiaoxiao2021-04-11  30

    本题要求:

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

    输入格式:

    a b

    输出格式:

    a+b的值

    输入样例:

    155 152

    输出样例:

    307

    解题思路 :

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

    Created with Raphaël 2.1.0 0001 0001 0000

    1 & 1 如下图所示

    Created with Raphaël 2.1.0 0001 0001 0001

    1 << 1 如下图所示

    Created with Raphaël 2.1.0 0001 0001 0010

    0 ^ 2 如下图所示

    Created with Raphaël 2.1.0 0000 0010 0010

    0 & 2 如下图所示

    Created with Raphaël 2.1.0 0000 0010 0000

    跳出递归函数。 得到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; }
    转载请注明原文地址: https://ju.6miu.com/read-666833.html

    最新回复(0)