写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
输入: a = 1, b = 1 输出: 2
这道题对比 二进制求和 java 算法与数据结构___Wang____的博客-CSDN博客
有以下不同的地方:1.这里直接给出了 int 类型,而不是字符串类型;2.不允许使用加减乘除,应该使用位运算来A这道题;
位运算求和的基本算法:
int sum = a^b;
int carry = (a&b)<<1;
完整代码如下:
class Solution {
public int add(int a, int b) {
int sum = a^b;
int carry = (a&b)<<1;
while(carry!=0){
a = sum;
b = carry;
sum = a^b;
carry = (a&b)<<1;
}
return sum;
}
}
//写法二
// class Solution {
// public int add(int a, int b) {
// while(b != 0) { // 当进位为 0 时跳出
// int c = (a & b) << 1; // c = 进位
// a ^= b; // a = 非进位和
// b = c; // b = 进位
// }
// return a;
// }
// }