题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:既然不准用四则运算,则考虑数值的位运算,即“异或”和“位与”。他们的计算规则是,总结:在“异或”中,只有在“01”的情况下为“1”,其他的情况为“0”,在“位与”中,只有在“11”的情况下为“1”,其他的情况为“0”。
根据这个运算规则,先对两个数值进行异或处理,再进行位与处理左移一位将进位移进数值中,对这两个结果继续重复以上操作,直到加数的值为“0”停止。
代码如下:
public class Solution {
public int Add(int num1,int num2) {
if(num2 == 0){
return num1;
}
int xor;
int and;
xor = num1 ^ num2;
and = (num1 & num2) << 1;
return (Add(xor,and));
}
}