这题挺有意思
不用+-算+法
先&:求出需要进位的位
后^:求出除了进位的结果
然后:把进位的那位左移,用上面的结果再去+进位后的结果。
class Solution {
public:
int getSum(int a, int b) {
while(b)
{
int carry = a & b;
a = a ^ b;
b = carry << 1;
}
return a;
}
};
本文介绍了一种不使用传统的加法运算符来实现两个整数相加的方法。通过位运算,首先计算出不考虑进位的两数相加结果,再计算出需要进位的部分,并将进位部分左移后再进行同样的操作,直至没有进位为止。
756

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



