A + B 问题
54%
通过
给出两个整数a和b, 求他们的和, 但不能使用 +
等数学运算符。
样例
如果 a=1
并且 b=2
,返回3
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
解题思路:
先看十进制加法
6+8=14 不算进位的加法=4 进位为1 结果为4+1*10=14
79+999=1078 不算进位的加法为968 进位为11 结果=968+11*10=(不进位)78+(进位)100*10=1078
应用到二进制:
3+5=0011+0101=(不进位)0110+(进位---*2等于右移一位)0001*2=(不进位)0100+(进位*2)0010*2=(不进位)0000+(进位*2)0100=1000=8
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
实现(c++):
int aplusb(int a,int b)
{
int sum=a^b;
int bit=a&b;
if(bit >0)
return aplusb(sum,bit<<1);
else
return sum;
}