编程题——另类加法
题目描述:
请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。
给定两个int A和B。请返回A+B的值
程序代码如下:
#include <iostream>
using namespace std;
/*使用位运算来解决
*二进制位异或运算可得相加之后当前位值
*二进制按位与运算再左移位可得进位值
*将两值不断异或运算来进行进位,直到进位值为0时即得到加法和*/
typedef class UnusualAdd {
public:
int addAB(int A, int B) {
int sum = 0, carry = 0;
while (0 != B)
{
sum = A^B;
carry = (A&B) << 1;
A = sum;
B = carry;
}
return sum;
}
}UA;
int main()
{
int A, B;
UA t;
while (cin >> A >> B)
cout << t.addAB(A, B) << endl;
return 0;
}
程序运行结果如下: