把二进制加法可以分为五进位加法和进位加法,无进位:0+0=0,0+1=1,1+0=1,有进位加法:1+1=0进位为1。可以发现无进位的加法与异或运算规律相同,有进位加法和与运算规律相同,无进位和n=a^b,有进位和c=(a&b)<<1 和s=a+b=n+c,循环求n和c直至进位c为0,此时s=n返回n即可。
class Solution {public int add(int a, int b) {while(b != 0){int carry = (a & b) << 1;a = a ^ b;b = carry;}return a;}
}