【剑指Offer】不用加减乘除做加法

题目

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、x、/四则运算符号。

实现

1
2
3
4
5
6
7
8
9
public int Add(int num1, int num2) {
while (num2 != 0) {
int sum = num1 ^ num2;
num2 = (num1 & num2) << 1;
num1 = sum;
}

return num1;
}

相关问题

不使用新的变量,交换两个变量的值。比如有两个变量a、b,希望交换它们的值。有两种不同的办法:

基于加减法 基于异或运算
a = a + b a = a ^ b
b = a - b b = a ^ b
a = a - b a = a ^ b