写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1
输出: 2
提示:
a, b 均可能是负数或 0
结果不会溢出 32 位整数
(和s)=(非进位和n)+(进位和c) s=a+b => s=n+c
无进位和 与 异或运算 规律相同,进位 和 与运算 规律相同(并需左移一位)
class Solution { public int add(int a, int b) { if (b == 0) { return a; } // 转换成非进位和 + 进位 return add(a ^ b, (a & b) << 1); } }
原文:https://www.cnblogs.com/congajiayou/p/14591874.html