【题目描述】
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
【解题思路】
当进位值不为0时,重复以下计算:
- 不计算进位值,只计算各个位相加的值,对于二进制加法来说,每位相加就是进行异或计算;
- 计算进位值,对于二进制加法来说,进位值的计算就是各位进行与计算,再向左移一位。
- 将临时的相加结果赋值给第一个数,将进位结果赋值给第二个数
用java实现的代码如下:
public class Solution {
public int Add(int num1,int num2) {
int carry = 1;
int temp = 0;
while(carry != 0){
temp = num1 ^ num2;
carry = (num1 & num2) << 1;
num1 = temp;
num2 = carry;
}
return temp;
}
}