[题目链接](https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例: 输入: a = 1, b = 1 输出: 2
提示: a, b 均可能是负数或 0 结果不会溢出 32 位整数
思路:加法由俩部分组成,即进位和非进位 示例:如 0110 和 0011 非进位位置:俩个数字异或的结果为非进位 进位位置: 俩个数字相与如果为1即俩个位置都为1,再左移一位即是进位; 循环控制:控制进位,如果进位不为0,则一直相与;
注意事项:如果测试用例为负数,需要强转为无符号整型unsigned int
class Solution {
public:
int add(int a, int b)
{
while(b)
{
int c = ((unsigned int)(a&b))<< 1;
a ^= b;
b = c;
}
return a;
}
};