思路
没有了四则运算符,还有位运算,也是可以搞一搞的。
以5+5为例,换算成二进制就是101+101。我们在平时进行十进制运算的时候,总是进行两个步骤,第一步不运算进位的情况,第二步运算进位。
那么看看第一步不运算进位,得到的结果就是000;
第二步考虑进位得到的结果就是1010。
回过头去看第一步的运算结果就是按位异或,第二步运算就是按位与,然后左移1位。
接下来就是把两步的结果加起来就可以了,但是不能用加法运算,于是就要递归了。
C++代码
class Solution { public: int Add(int num1, int num2) { int a, b; while (num2) { a = num1 ^ num2; b = (num1 & num2) << 1; num1 = a; num2 = b; } return num1; } };