剑指offer-不用加减乘除做加法-java

题目描述:

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

思路解析:

  • 按位进行异或运算,0+0,1+1,结果都是0;1+0,0+1,结果都是1;刚好是不进位状态的结果
  • 按位进行与运算,会得到需要进位的位数,所以向左移一位。
  • 再把加的结果和进位的结果,继续加和进位。

代码:

public class Solution {
    public int Add(int num1,int num2) {
        int sum,carry;
        do{
            sum=num1^num2;
            carry=(num1&num2)<<1;
            num1=sum;
            num2=carry;
        }while(carry!=0);
        return sum;
    }
}

你可能感兴趣的:(牛客,Java,剑指offer,在线编程)