写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1
输出: 2
思路:位运算
a+b=a^b+(unsigned int)(a&b)<<1;
unsigned int 是为了避免负数的情况。
利用这个公式,判断当一方为0的时候就结束加法
class Solution {
public:
int add(int a, int b) {
if(!a)return b;
if(!b)return a;
return add(a^b,(unsigned int)(a&b)<<1);
}
};