/*
不考虑进位,
1+0=1 1^0=1
0+1=1 0^1=1
0+0=0 0^0=0
1+1=0 1^1=0
以上可以用 异或来实现 XOR=a^b
进位
1+0=0 1&0=0<<1
0+1=0 0&1=0<<1
0+0=0 0&0=0<<1
1+1=1 1&1=1<<1
以上可以采用 位与运算 JW=(a&b)<<1
*/
#include
using namespace std;
int add(int a, int b)
{
if (b == 0) return a;//递归终结者
int jw = ((unsigned int)(a & b)) << 1;
int wjw = a ^ b;
return add(wjw, jw);
}
int main(void)
{
int a = 23, b = 24;//47
cout << "the sum is:" << add(a,b)<< endl;
return 0;
}
#include
using namespace std;
int add(int a, int b)
{
while (b != 0)
{
int JW = ((unsigned int)(a & b)) << 1;//移位之前必须要是无符号
int WJW = a ^ b;
a = WJW;b = JW;
}
return a;
}
int main(void)
{
int a = 23, b = 24;//47
cout << "the sum is:" << add(a,b)<< endl;
return 0;
}
void swap(int a,int b)
{
a^=b;
b^=a;
a^=b;
}