一.题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
二.代码(C++)
class Solution {
public:
int Add(int num1, int num2)
{
int n1,n2;
n1 = num1^num2;
n2 = (num1&num2)<<1;
if(n2)
{
n1 = Add(n1,n2);
}
return n1;
}
};
三.提交记录
四.备注
通过真值表得知,两数的按位与结果是进位,按位异或结果是和,迭代知道没有进位为止即可。
注:有符号数的左移是逻辑移位,补0;右移是算术移位,补1。