- 通过按位异或^求得不含进位的和
- 通过按位&求得进位的位置,左移一位,表示进位后的结果
- 整数通过补码表示,因此不用单独考虑加数为负的情况
#include <iostream>
using namespace std;
int Add(int num1, int num2) {
while (num2) { //当没有进位时,非进位和就是整体的和
int temp = (num1 & num2) << 1; //计算出进位;
num1 ^= num2; //非进位和
num2 = temp; //进位;
}
return num1;
}
int main() {
cout << Add(1, 10) << endl;
cout << Add(1, -10) << endl;
cout << Add(-3, 7) << endl;
return 0;
}