位运算

  • a 与 b 异或 ——-> 得到 a + b 的无进位相加信息
  • a 与 b 与, 然后再左移动一位 (因为两个1相加是要进位的对不对) ———> 得到 a + b 的进位信息

  • a + b的结果 —-> 无进位相加信息 + 进位信息

    • 周而复始,直到进位信息没了,无进位信息就是答案

image.png

  1. public int getSum(int a, int b) {
  2. int sum = a; // 有可能b一开始就是0
  3. while (b != 0) {
  4. sum = a ^ b;
  5. b = (a & b) << 1;
  6. a = sum;
  7. }
  8. return sum;
  9. }