#include <iostream>
using namespace std;
int Add(int num1,int num2)
{
if (num2 == 0)
{
return num1;
}
int tmp,carry; //测试5+7
tmp = num1^num2; //第一步:(101)^(111) = (010)------------------>tmp
carry = (num1 & num2) << 1; //(101)&(111) = (101)<<1 = (1010)------>carry
return Add(tmp,carry); //第二步:(0010)^(1010) = (1000)--------------->tmp
//(0010)&(1010) = (0010)<<1 = (0100)--->carry
//第三步:(1000)^(0100) = (1100)--------------->tmp
//(1000)&(0100) = (0000)--------------->carry
//当carry == 0时,返回tmp。
}
int main()
{
cout<<Add(5,7)<<endl;
return 0;
}