剑指 Offer 65. 不用加减乘除做加法 思路: (a&b)<<1 进位 a^b 是非进位和 (不包含进位的结果) c++不支持负数的移位,需要加上转换为非负数后操作 class Solution { public: int add(int a, int b) { while( b != 0) { int c = (unsigned int)( a&b) << 1; a^=b; b= c; } return a; } };