标签搜索

目 录CONTENT

文章目录

用位运算计算两数的和.md

小小城
2021-08-22 / 0 评论 / 0 点赞 / 3 阅读 / 534 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

用位运算计算两数的和

@[toc]

方法一:

//方法一:
//sum为计算结果
//carry为进位
int bitAdd(int a, int b)
{
	if (b == 0)//当进位为0的时候,就可以返回了
		return a;
	int sum = a ^ b;//计算a和b中不同时为1的位之和,剩下的
	//就是a和b中同时位1的情况
	int carry = (a&b) << 1;//代表进位,如果不为0,就说明a和b中有有同时为
	//1的情况,同时为1的为相加必然要进位,进位方式就是左移,
	//然后继续计算sum和carry的和
	//当然sum和carry的和也有可能出现某个位同时为1 的情况,继续递归即可
	//递归结束条件就是当sum和carry相加没有进位,直接返回

	return bitAdd(sum, carry);
}

方法二:

//方法二:
//a&b是为了把a和b中同为1的两位相加,那么既然两位同为1,
//也就代表在2进制中要发生进位,在位运算中如何进位呢?
//把结果左移一位即可,右边刚好补0;
//a^b是为了计算a为0,b为1,或者a为1,b为0的情况,
//这种不会进位,直接相加即可
int Add(int a, int b)
{
	return ((a & b) << 1) + (a^b);
}

在这里插入图片描述

0

评论区