题目:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
数据范围:两个数都满足 −10≤n≤1000
进阶:空间复杂度 O(1),时间复杂度 O(1)
示例1
输入:1,2
返回值:3
示例2
输入:0,0
返回值:0
分析:
num1:0001
num2:0010
进位:00000
非进位: 0011
进位为0时,返回非进位
代码:
class Solution {
public:
int Add(int num1, int num2) {
int tmp;
while(num1){
tmp = num1;
//进位
num1 = (num1 & num2) << 1;
//非进位:相当于加
num2 = tmp ^ num2;
}
return num2;
}
};