给出两个整数a和b, 求他们的和, 但不能使用 +等数学运算符。
思路:看了搜索引擎上各位大神的思路,总结了一下,是需要用到二进制的计算
按1+2来说
0001
0010
则a+b就可以是a|b,那OK,如果有进位该怎么算
如果忽略进位的话
a+b可以是a^b
进位表示为a&b<<1
综合以上三步
算法如下
int aplusb(int a ,int b){
int c=0,d=0;
while((a&b) !=0);{
c=a^b;
d=(a&b)<<1;
a=c;
b=d;}
}
return a|b;