題目描述:實現a+b,但是不用加號
解析:
a和b的異或運算被稱作沒有進位的加法運算。其實可以想象,如果1和1想加 結果爲0進位爲1 0和0相加 還是0 1和0相加 還有0和1相加都是一 剛好符合異或運算的規則,然後現在要解決的就是進位問題,進位可以通過與運算來解決,與運算後的結果如果左移一位,剛好是進位後的結果,此時用這兩個結果再做一次上面描述的過程,那麼直到進位爲0的時候,就是最終的結果了,下面是代碼
int add(int a,int b)
{
int sum;
int carry ;
while(b != 0)
{
sum = a ^ b;
carry = (a & b) << 1;
a = sum;
b = carry;
}
return a;
}