Last updated 5 years ago
Was this helpful?
这两篇对于 bit manipulation 的总结非常好!
首先用 a & b 来得到进位,并且循环的退出条件是什么时候没有进位了,什么时候就退出。
a & b
然后用 a ^ b 来得到不同的 bit
a ^ b
最后把 carrier shift,以此类推
public class Solution { public int getSum(int a, int b) { if (a == 0) return b; if (b == 0) return a; while (b != 0) { int carrier = a & b; a = a ^ b; b = (carrier << 1); } return a; } }