剑指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;
}
}