写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
无进位和运算就是按位异或结果,进位就是与运算结果但是需要左移一位,因为进位影响下一位的运算。
所以s = a + b,其实就是无进位和+进位的结果。
算法步骤:
计算a和b的无进位和,和进位
如果进位不为0,则说明a+b的结果等于无进位和+进位,此时,把无进位和作为a,进位作为b,继续计算
如果进位等于0, 说明此时a+b的结果就等于无进位和,返回无进位和即可。
public class Solution {
public int Add(int num1,int num2) {
int addbit = (num1&num2)<<1;
int sum = num1^num2;
while(addbit!=0){
int a = (addbit&sum)<<1;
int b = addbit^sum;
addbit = a;
sum = b;
}
return sum;
}
}