另类加法

另类加法

不使用任何算术运算符,进行A与B的加法运算
方法:使用按位异或的方法,首先A与B按位异或,然后由于二进制中如果两个数字的相同位置的数都是1的话,加会向前进1位,所以接下来使用A与B按位与的方法,就可以找到两个数都是1 的那一位,然后将此时的这一位向左移动1位,就完成了进位,然后再把得到的两个数进行按位异或,如果此时按位与的时候为0,那么另外一个数中存放的就是这个加法的结果,具体使用的还是递归的方法。

#include <iostream>
using namespace std;

class UnusualAdd {
public:
	int addAB(int A, int B)
	{
		if (B == 0)
		{
			return A;
		}
		int tmp = A ^ B;
		int cur = (A & B) << 1;
		return addAB(tmp, cur);
	}
};



int main()
{

	return 0;
}

解决这类不使用运算符进行简单的模拟运算的时候,首先考虑的就是位操作运算符的使用,一般加法首先考虑按位异或,按位异或将除了会进位的1都加上,然后进一步考虑进位就可以,加上这个进位就将所有的位置加上了,此时只要没有进位就可以知道已经计算完了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值