一、题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
示例1
输入
1,2
返回值
3
二、思路
这道题不让用四则运算,就要想到加减乘除在计算机里如何计算的。加法一般是用与运算、和运算结合。与运算可以算不进位的运算,而和运算可以算进位,将进位运算与不进位运算加起来就是最终的结果。比如110+011=(110^011)+(110&011)=(101 ^100)+(101&100)=1001,一直算到进位运算为0,则代表没有进位了,可以直接输出结果了。
三、具体代码
class Solution {
public:
int Add(int num1, int num2) {
int temp1,temp2;
while(num2!=0){
temp1=(num1&num2)<<1;
num1=num1^num2;
num2=temp1;
}
return num1;
}
};