题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
做这个题的前提要明白两个思想:
①:二进制位相异或的结果,是两数相加的结果(不考虑进位)
②:二进制位相与后,左移一位的结果是两数相加进位后的结果(只考虑进位)
得出结论:两个数相加,如果不需要进位的话,相异或的结果就是相加的结果
举例1:
1+2
异或
相与后左移一位
举例2:
异或
继续循环这个过程
直到B==0了停止
所以代码就很容易实现了
public class Solution {
public int Add(int a,int b) {
if(a==0)return b;
int sum=0;
int cur=0;
while(b!=0){
sum=a^b;
cur=(a&b)<<1;
a=sum;
b=cur;
}
return a;
}
}
😄