Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.
思路:这题很有意思,参考了别人的答案,才理解了这道题,不允许使用‘+’和‘-’ ,所以通过使用位运算进行加法运算, 异或运算是进行没有进位的加法a,然后通过且运算后左移1位获得进位符b,然后再将a与b继续异或,直至进位符为0
Example:
Given a = 1 and b = 2, return 3.
Answer:
public class Solution {
public int getSum(int a, int b) {
if(b==0){
return a;
}
if(a==0){
return b;
}
while (b!=0) {
int carry = (a & b) << 1;
a = a ^ b;
b = carry;
}
return a;
}
}
思路:这题很有意思,参考了别人的答案,才理解了这道题,不允许使用‘+’和‘-’ ,所以通过使用位运算进行加法运算, 异或运算是进行没有进位的加法a,然后通过且运算后左移1位获得进位符b,然后再将a与b继续异或,直至进位符为0