题目:RT。
思路:不用加减乘除只能用位运算。先计算两个数相加以后不进位的值,保存这个进位的值,如5+7进位10,不进位为2,那么5^7的值就是2,(5&7)<<1的值是10,然后把不进位的值和要进位的值相加即可。
代码:
public int Add(int num1, int num2) {
while (num2 != 0) {
// 得到二进制相加以后不进位的值,如5+7不进位的值是2
int tmp = num1 ^ num2;
// 得到进位的值,如5+7进位的值是10
num2 = (num1 & num2) << 1;
// num1=tmp,如果不进位就返回num1
num1 = tmp;
}
return num1;
}