分析:以10 + 15爲例 10的二進制爲 1 0 1 0,15的二進制爲 1 1 1 1,
可以這樣做:
1、先給這兩個數加起來不考慮進位,這樣得到的結果爲 0 1 0 1,會發現與^得到的結果相同,與是先給兩個數
做^運算;
2、接下來考慮進位,兩個二進制數相加會有這麼幾種情況 1 1,0 0, 1 0, 0 1除第一種情況外其他情況均不產生進位,而1 1兩數相加進1,結果得0,可以這樣做先將兩個數做&運算,再將結果左移1位,這樣就模擬了進位
3、將第1步得到的沒進位的和 和第2步的進位相加便是結果
int bitAdd(int num1, int num2)
{
if (0 == num2)
return num1;
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
return bitAdd(sum, carry);
}