另类加法
不使用任何算术运算符,进行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都加上,然后进一步考虑进位就可以,加上这个进位就将所有的位置加上了,此时只要没有进位就可以知道已经计算完了。