您的位置:首页 > 其它

利用位运算实现两个整数的加法运算(加注释)

2018-02-27 00:00 295 查看
#include<iostream>
using namespace std;

//利用位运算实现两个整数的加法运算
int add(int a,int b)
{
if(b == 0) return a;

int sum,carry;

//a ^ b是不同位的和
sum = a ^ b;

//a & b是相同位的和的一半,左移1就是两倍
carry = (a & b) << 1;

/*
2018.2.27 17:21 LGL
实际上,两数之和 = 不同位的和+ 相同位的和
当相同位的和为0时,说明不存在进位了,结束递归
sum看作是没有进位的加法,carry看作只有进位的加法
*/
return add(sum , carry);
}

int main()
{
int m,x,y;
cin>>x>>y;

m = add(x,y);

cout<<m<<endl;

return 0;
}


荣耀给予世界,真实留给自己,致敬开源!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  位运算
相关文章推荐