其他分享
首页 > 其他分享> > leetcode刷题05

leetcode刷题05

作者:互联网

 

设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。

示例:

输入: a = 1, b = 1
输出: 2



解:使用加法器的原理
加法器需要三步 1.a和b异或的结果 2.a+b的进位c,3.c和下面一次的相加

 

  step1=a^b,step2=a&b,step3=(a&b)<<1   举个例子,c的二进制 ····0010, d的二进制 ····0010  (c&d)=0010 左移一位0100,我们本来就应该进个1的

class Solution {
public:
    int add(int a, int b) {
        if(b==0)
            return a;
        int step1=0, step2=0, step3=0;
        while(b!=0){
            step1 = a^b;
            step2 = a&b;
            step3 = (unsigned int)step2 << 1;
            a = step1;
            b = step3;
        }
        return step1;
    }
};

作者:Eric_Light
链接:https://leetcode-cn.com/problems/add-without-plus-lcci/solution/bu-yong-hao-de-jia-fa-by-oneway-4/

 

标签:05,int,相加,step3,step2,step1,加法器,leetcode,刷题
来源: https://www.cnblogs.com/czrb/p/12373397.html