73.不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用 +、-、×、÷ 四则运算符号。
数据范围:
输入和输出都在int范围内。
样例:
输入:num1 = 1 , num2 = 2
输出:3
代码:
class Solution {
public int add(int num1, int num2) {
//循环直到没有进位需要处理
while(num2!=0){
//计算无进位和(异或运算)
int sum = num1^num2;
//计算进位(与运算+左移)
//与运算的性质:只有两个位都是1时结果才是1
//左移1位相当于将进位应用到更高位
int carry = (num1&num2)<<1;
//将无进位和与进位作为新的操作数
num1 = sum;
num2 = carry;
}
//当没有进位需要处理时,num1就是最终结果
return num1;
}
}