题目:
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1
输出: 2
题解:
利用位运算,按位与求得进位,按位异或求得非进位。
当进位为0时,两数按位异或即为两数和。
代码:
第一个方法leetcode时间没通过
public class Solution {
public int Add(int num1,int num2) {
//sum1表示进位
//sum2表示非进位
int sum1,sum2;
do{
sum1 = (num1 & num2) << 1;
sum2 = num1 ^ num2;
}while(sum1 != 0);
return sum2;
}
}
class Solution {
public int add(int num1, int num2) {
if(num2 == 0){
return num1;
}
return add(num1 ^ num2,(num1 & num2) << 1);
}
}