实现两个数之和:
- 两个数异或等于两个数之和,但是不考虑比特进位,tmp1 = num1 ^ num2
- 两个数按位与之后左移一位表示进位,tmp2 = (num1 & num2)<<1;
- 循环执行上面两步,直到进位tmp2为0,num1 =tmp1;num2 = tmp2;
#include <iostream>
using namespace std;
int main()
{
int num1 = 0;
int num2 = 0;
while(cin>>num1>>num2)
{
int add = 0;
int tmp1 = 0;
int tmp2 = 0;
while(1)
{
tmp1 = num1^num2;
tmp2 = (num1&num2)<<1;
if(tmp2 == 0)
{
add = tmp1;
break;
}
num1 = tmp1;
num2 = tmp2;
}
cout<<add<<endl;
}
return 0;
}