給出兩個整數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;