题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。
样例:
输入:num1 = 1 , num2 = 2
输出:3
分析:
借助位运算实现。
第一步只相加不进位即0+0=0,1+1=0,0+1=1,所以对于了二进制的异或运算;
第二步考虑进位,只有在1+1的情况下才会出现进位,所以我们可以当做两个数做与运算然后左移一位;
第三步把前两步的结果相加:相加的过程是重复前面两步直到不产生进位。
public int add(int num1, int num2) {
while(num2!=0) {
int temp=num1^num2;
num2=(num1&num2)<<1;//当进位值为0时结束循环
num1=temp;
}
return num1;
}