第 27 日:不用加减乘除做加法
题目链接:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/
题目
解题
-
位运算
解题思路:
做完以后,脑中突显出一句话:人球分过。也就是说进位和无进位的值分开来算然后再加起来就是结果。
但是我们不能使用+
运算符,那最后一步怎么办呢?
有人说你这不是废话吗,能+
的话人球分过前一步求和就搞定了。不要急,既然又要我们加起来,那我们再重复刚才的操作(进位和无进位的值分开来算然后再加起来就是结果),直到进位为0,是不是就不用加了?直接就可以返回结果了!!详细代码如下:
class Solution {
public int add(int a, int b) {
while(b!=0){
int c= a&b;//与运算,求进位
a=a^b;//异或运算,求吴金伟
b=c<<1;
}
return a;
}
}