用位运算来实现该问题,用异或可以实现无符号的加法操作,然后需要使用与运算来实现进位,而负数因为是补码的形式存储所以能够得到正确的处理,十分巧妙的方法,贴代码。
1 class Solution { 2 public: 3 int getSum(int a, int b) 4 { 5 while(b!=0) 6 { 7 unsigned int carry = (unsigned int)(a&b)<<1; 8 a^=b; 9 b = carry; 10 } 11 return a; 12 } 13 };