写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
无进位和运算就是按位异或结果,进位就是与运算结果但是需要左移一位,因为进位影响下一位的运算。 所以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
;
}
}