不用加减乘除做加法-剑指Offer
不用加减乘除做加法
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路
- 我们可以考虑使用二进制的位运算
- 先异或(不进位),再做位与运算,等到要进位的位,左移一位得出进位,再进行一次加法的流程循环下来,直到不产生进位为止
代码
public class Solution {
public int Add(int num1,int num2) {
int temp01 = 0;
int temp02 = 0;
do {
temp01 = num1 ^ num2;
temp02 = (num1 & num2) << 1; // 代表进位
num1 = temp01;
num2 = temp02;
} while (temp02 != 0); // 没有进位
return temp01;
}
}