两整数之和 -- 位运算

 个人主页:Lei宝啊 

愿所有美好如期而遇 


两整数之和 -- 位运算_第1张图片

本题链接

力扣(LeetCode)

输入描述

输入两个要相加的数,a和b

输出描述

返回a和b的和,这里其实直接return a+b; 直接就过了,但是人题目要求还是给点面子~

算法分析

不许使用加法和减法,一般就是使用位运算了,而我们也知道异或又可以理解成二进制数无进位相加,我们再去找到进位,两者相加,不许使用加法,则重复该过程,直到进位为0,我们看图:

两整数之和 -- 位运算_第2张图片

解题源码

class Solution {
public:
    int getSum(int a, int b) 
    {
        while(b)
        {
            int temp = a ^ b;

            b = (a & b) << 1;
            a = temp;
        }
        return a;
    }
};

你可能感兴趣的:(算法,算法,leetcode,职场和发展)