#include <iostream>
using namespace std;
int add(int first,int second);
int main()
{
int a,b;
while(cin >> a >> b)
{
cout << add(a,b) << endl;
}
return 0;
}
int add(int a, int b)
{
int temp = 0,result = 0,c=0,_a,_b,offset = 0; //offset记录最大偏移量,如temp = 001011,不加offset,则result = 1101
while(a != 0 || b != 0)
{
_a = a&1;
_b = b&1;
if((_a&_b) == 1) //_a , _b =1,刚开始_a&_b没有加括号,运行结果错误;而且一定要做好逻辑分类,0&0=0
{
if(c == 0)
{
temp = (temp << 1)|0;
c = 1;
}
else
{
temp = (temp << 1)|1;
c = 1;
}
}
else{
if(_a == 0&&_b == 0) //_a , _b == 0
{
if(c == 0)
temp = (temp << 1)|0;
else
{
temp = (temp << 1)|1;
c = 0;
}
}
else //_a , _b = 1,0 or 0,1
{
if(c == 0){
temp = (temp << 1)|1;
}
else{
temp =(temp << 1)|0;
c = 1;
}
}
}
a = a >> 1;
b = b >> 1;
offset ++;
}
if(c)
{
temp = (temp <<1)|1;
offset ++;
}
while(offset --)
{
result = (result << 1)|(temp&1);
temp = temp >> 1;
}
return result;
}
实现a + b两个整数作和,不能用 '+' 号(人人网)
最新推荐文章于 2022-05-04 19:12:10 发布