考虑只用位运算去解决。
\(a+b\) 可以表示成 \((a\land b)+(a\lor b)\),即把共有的 \(1\) 和独有的 \(1\) 分开。
因为 \((a\land b)\in(a\lor b)\),所以可以将后者异或上前者,前者左移一位,和保持不变。
这样又回到了原问题,递归计算即可,边界条件为 \(a=0\)。
其实就是在模拟二进制加法,\(a\) 是所有进位的部分,\(b\) 是当前的值。
考虑只用位运算去解决。
\(a+b\) 可以表示成 \((a\land b)+(a\lor b)\),即把共有的 \(1\) 和独有的 \(1\) 分开。
因为 \((a\land b)\in(a\lor b)\),所以可以将后者异或上前者,前者左移一位,和保持不变。
这样又回到了原问题,递归计算即可,边界条件为 \(a=0\)。
其实就是在模拟二进制加法,\(a\) 是所有进位的部分,\(b\) 是当前的值。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799515.html
如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!