题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路解析:
- 按位进行异或运算,0+0,1+1,结果都是0;1+0,0+1,结果都是1;刚好是不进位状态的结果
- 按位进行与运算,会得到需要进位的位数,所以向左移一位。
- 再把加的结果和进位的结果,继续加和进位。
代码:
public class Solution {
public int Add(int num1,int num2) {
int sum,carry;
do{
sum=num1^num2;
carry=(num1&num2)<<1;
num1=sum;
num2=carry;
}while(carry!=0);
return sum;
}
}