描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
数据范围:两个数都满足−10≤n≤1000
进阶:空间复杂度 O(1),时间复杂度 O(1)
示例1
输入:1,2
返回值:3
思路: A+B=A^B+(A&B)<<1;
代码:
class Solution {
public:
int Add(int num1, int num2) {
while(num2!=0) //循环的意义:循环将进位加到num1值上;进位为0时,跳出循环.
{
int sum=num1^num2;//非进位求和
int temp=(unsigned int)(num1&num2)<<1;//计算出进位;
num1=sum;//非进位和
num2=temp;//进位;
}
return num1;
}
};