剑指offer面试题47不用加剑乘除做加法,考虑加法的过程用位运算

来源:互联网 发布:淘宝客导购推广微信 编辑:程序博客网 时间:2024/04/28 13:44
/*这个就是用位运算模拟加法的过程 我们这么想 两个数相加先把对应位的数加起来 不考虑进位 加完后 再把进位都加上如果还产生进位的话 上一步加得的结果  再加进位 直到没有进位*/#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;}

原创粉丝点击