/*
这个就是用位运算模拟加法的过程 我们这么想 两个数相加
先把对应位的数加起来 不考虑进位 加完后 再把进位都加上
如果还产生进位的话 上一步加得的结果 再加进位 直到没有进位
*/
#include<iostream>
#include<cstdio>
using namespace std;
int Sum(int a, int b)
{
int sum,tmp;
do{
sum=a^b;//第一步 先加 不产生进位的
tmp=(a&b)<<1;//第二步 是这一次进位后得到的结果
a=sum;//a变成和 b变成进位如果b不是0 那他俩还继续加 直到没有进位了
b=tmp;
}while(tmp!=0);//很少写do while 注意这里有分号
return sum;
}
int main()
{
int a,b;
while(cin>>a>>b)
{
cout<<Sum(a,b)<<endl;
}
return 0;
}
剑指offer面试题47不用加剑乘除做加法,考虑加法的过程用位运算
最新推荐文章于 2024-07-21 12:07:09 发布