Solution1:
学习之书上(p237-238)的思路就很好啊~
注意java中的位移操作:
Java:移位运算符左移运算符<<、右移运算符>>、无符号右移运算符>>>。
java中也有do…while循环,不过用的很少。
class Solution {
int Add(int num1, int num2) {
int sum, carry;
do {
sum = num1 ^ num2;
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
} while (num2 != 0);
return num1;
}
}
class Solution {
public:
int Add(int num1, int num2) {
int sum, carry;
do {
sum = num1 ^ num2;
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
} while(num2 != 0);
return num1;
}
};
##Solution2:
20180910日重做。
class Solution {
public:
int Add(int num1, int num2) {
int res = 0, carry = 0;
res = num1^num2;
carry = (num1&num2) << 1;
while (carry) {
int tmp = res;
res = res^carry;
carry = (tmp&carry) << 1;
}
return res;
}
};