原题链接:Sum of Two Integers
分析:实现加号运算符,采用的是位操作,分三步:
第一步a^b得到一个值res
第二步(a&b)<<1得到一个值表示进位
第三步,如果有进位表示res还需要加上进位的值,否则res就是最终结果,注意res加上进位值也有可能有进位,所以递归getSum()操作。
题解:
class Solution {
public:
int getSum(int a, int b) {
/*
Time Complexity:O(1)
Space Complexity:O(1)
*/
int res=a^b;
int tmp=(a&b)<<1;
if(tmp!=0)return getSum(res,tmp);
return res;
}
};
位操作实现加法
本文介绍了一种使用位操作实现两个整数相加的方法。通过异或运算获取不考虑进位的值,与按位与运算及左移运算结合来处理进位,递归调用直至没有进位产生。此方法巧妙地避免了直接使用加法运算。
756

被折叠的 条评论
为什么被折叠?



