jxfang的专栏

温柔互助,共行一程

371. Sum of Two Integers, 不用加减乘除运算符计算两数之和

rt.

思考:在计算5 + 9时,首先不进位的话 5 + 9 = 45 + 9的进位为1,然后和就是1 * 10 + 4 = 14。同理放到二进制中也可以采用这样的方法。

代码如下;

class Solution {
public:
    int getSum(int a, int b) {
        return bitAdd(a, b);
    }
    
    int bitAdd(int a, int b) {  
        int nCarry = a & b;      // 进位  
        int nSumNoCarry = a ^ b; // 非进位  
        if (nCarry != 0)  
            return BitAdd(nSumNoCarry, nCarry << 1);  
        else  
            return nSumNoCarry;  
    }  
};

若要计算a = b * 3,可将a = b << 1 + b,然后运用上述bitAdd()函数即可。


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fjx1173865548/article/details/77852832
文章标签: leetcodeOJ 位操作
个人分类: OJ
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭