题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号
解析:不用四则运算只能用二进制相加的方法 ①首先对两个整数进行异或得到,此时不考虑进位,例如5和17异或得到10100; ②再对两个数进行与运算得到进位,进位位置的左移一位为实际进位,5&17<<1=10; ③将上述两个结果相加得到10110—>22,这里注意如果相加还是有进位则重复①②步骤,直到没有进位。
public int Add(int num1,int num2) {
int re = 0;
//如果进位不为0,则重复步骤
while (num2!=0){
//1首先进行异或运算,不算进位相加
re = num1^num2;
//2两数进行与运算,求得进位
int index = (num1&num2)<<1;
//3.将上述结果相加即得到和
num1 = re;
num2 = index;
}
return num1;
}