剑指offer | 不用加减乘除做加法

2019-07-31  本文已影响0人  icebreakeros

不用加减乘除做加法

写一个函数,求两个整数之和

示例
输入:1 2
输出:3

思路:将加法分为三步:相加不计进位(异或),记下进位(先做位与运算,再向左移动一位),把前两个步骤的结果相加(相加过程依然是重复前两步,直到不产生进位为止)

public class AddTwoNumbers {

    public int add(int m, int n) {
        int sum = 0;
        int carry = 0;
        do {
            sum = m ^ n;
            carry = (m & n) << 1;
            m = sum;
            n = carry;
        } while (n != 0);
        return m;
    }
}

上一篇下一篇

猜你喜欢

热点阅读