题目链接:371. 两整数之和 - 力扣(LeetCode)
可能会些朋友第一次遇见这个题比较困惑,真能不用加减法得到两个数的和吗?这简直是太匪夷所思了,真的有这种方法吗?欸!🤓☝️有的朋友有的。
算法解析
在这种不能使用加减运算的情况下,我们优先考虑到使用位运算来解决。
首先为大家介绍两个位运算符:异或 : ^ 与 : &
当与(进位)的结果为0时,代表不再进位了。此时异或(无进位相加)的结果就是最终的计算结果
代码实现
class Solution {
public:int getSum(int a, int b){while(b)//当与的结果为0时,异或(a)的结果就是最终计算的结果{int x=a^b;int y=(a&b)<<1;a=x;b=y;}return a;}
};