问题概述
不使用运算符 + 和 -,计算两整数之和
思考
不使用 + 和 - ,那就只能想到用位运算来处理了。思路如下:
- 两数进行 ^(异或运算),可以得到两个数在相同位上数值不同的相加结果
- 两数进行 &(与运算),可以得到哪些位该进位 - 如果与运算的结果为 0,代表两数的所有位都是不同的数值,不需要进位,那么第一步得到的结果就是最终的结果
- 如果与运算的结果不为 0,代表有位要进位,那么需要将这个结果往左移一位
 
- 如果与运算的结果为 
- 重复上面两步,直到与运算结果为 0,即得到的就是正确的结果
实现代码
public int getSum(int a, int b) {while (b != 0) {int t = a^b;b = (a&b)<<1;a = t;}return a;
}