[leetCode]剑指 Offer 65. 不用加减乘除做加法

在这里插入图片描述

解法

使用位运算:

  1. 不计算进位,a与b异或完成二进制加法
  2. 使用按位与计算哪一位相加会产生进位
  3. a b 相加结果与进位(按位与的结果左移一位)相加
  4. 循环结束条件:进位为0,也就是没有产生进位
class Solution {
    public int add(int a, int b) {
        int sum, carry;
        do {
            sum = a ^ b;
            carry = (a & b) << 1;
            a = sum;
            b = carry;
        } while(carry != 0);
        return sum;
    }
}
posted @ 2020-09-28 12:13  消灭猕猴桃  阅读(73)  评论(0编辑  收藏  举报