Given two integers a and b, return the sum of the two integers without using the operators + and -.
Example 1:
Input: a = 1, b = 2 Output: 3
Example 2:
Input: a = 2, b = 3 Output: 5
Constraints:
-1000 <= a, b <= 1000

许多死记硬背的点:
0xFFFFFFFF是一个 十六进制 (0x) 数,表示 32位 中的所有位都为1。- 负数的补码表示为:正数的二进制按位取反(
~),再加1。 a ^ MASK是用来将高位变为0,低 32 位保持原样。- 超过 32 位整数最大值的数,在补码中是负数。转换方法:如果值超过
0x7FFFFFFF,可以用:~(a ^ MASK)。 - a + b 可以表示为 a ^ b + (a & b) << 1