题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1
输出: 2
提示:
a, b 均可能是负数或 0
结果不会溢出 32 位整数
方法1:
主要思路:
(1)使用与操作获得位同为1的位,也是需要进位的位,使用异或操作获得不需要进位的位的和,随后将与操作结果左移一位(注意这里需要转成无符号int),再重复操作;
class Solution {
public:
int add(int a, int b) {
while(a){
int tmp=a&b;
b^=a;
a=((unsigned int)tmp)<<1;//需要先转成无符号数字
}
return b;
}
};