题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
题解:
class Solution {
public:
int Add(int num1, int num2)
{
while(num2 != 0)
{
int temp = num1 ^ num2;
num2 = (num1&num2)<<1;
num1 = temp;
}
return num1;
}
};
解题思路;
- 两个数做异或,得到的是无进位的和
- 两个数做与运算,左移一位,代表两个数和的进位
- 循环异或,将无进位和与进位相加,直至进位为零。