考虑只用位运算去解决。
\(a+b\) 可以表示成 \((a\land b)+(a\vee b)\),即把共有的 \(1\) 和独有的 \(1\) 分开。
因为 \((a\land b)\in(a\vee b)\),所以可以将前者左移一位,后者异或上前者,和保持不变。
这样又回到了第一步,递归计算即可,边界条件为 \(a=0\)。
其实就是在模拟二进制加法,只不过把进位放在了一起。
考虑只用位运算去解决。
\(a+b\) 可以表示成 \((a\land b)+(a\vee b)\),即把共有的 \(1\) 和独有的 \(1\) 分开。
因为 \((a\land b)\in(a\vee b)\),所以可以将前者左移一位,后者异或上前者,和保持不变。
这样又回到了第一步,递归计算即可,边界条件为 \(a=0\)。
其实就是在模拟二进制加法,只不过把进位放在了一起。