给出两个整数a和b, 求他们的和, 但不能使用 +
等数学运算符。
思路:对于两个整数,不能使用+运算符,自然想到是通过位运算。异或可以实现整数对应二进制的加法,但是缺失了进位,即 1+1=0,进位为1。
使用按位与实现进位,如果进位不为0,则循环。
/*
* @param a: An integer
* @param b: An integer
* @return: The sum of a and b
*/
int aplusb(int a, int b) {
// write your code here
int carry = 0;
int sum = 0;
while(b !=0 )
{
sum = a ^ b;
carry = (a & b) << 1;
a = sum;
b = carry;
}
return sum;
}