题目
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
代码实现
class Solution {
public int add(int a, int b) {
/**
* a+b可以看成是a^b加上(a & b)<<1的结果
* 但是因为不能使用加法,所以需要不停让(a & b)<<1变小,最后变为0,
* 因为(a & b)<<1表示的是两个数的进位关系,如果为0证明没有进位了,也就是异或的结果就是最终结果
* 返回a即可
* 比如5 + 7 = 10 + 2 = 8 + 4 = 12 + 0
*/
while (b != 0){
int temp = (a & b) << 1;
a = a ^ b;
b = temp;
}
return a;
}
}