分析:如果没有进位,那么a|b为正确答案,但是有进位时1|1=0
思想:可以先判断两个数相加是否有进位,如果有进位就忽略进位相加,然后再加上进位值即为正确答案
①判断进位:a&b!=0
②计算进位值:(a&b)<<1
④计算忽略进位的值a^b
③进位加上非进位的值a|b
int aplusb(int a, int b) {
// write your code here
int c=0;
int d=0;
while((a&b)!=0){
c=a^b;
d=(a&b)<<1;
a=c;
b=d;
}
return a|b;
}