【剑指offer】不用加减乘除做加法 -- java 实现

【题目描述】
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
【解题思路】
当进位值不为0时,重复以下计算:

  • 不计算进位值,只计算各个位相加的值,对于二进制加法来说,每位相加就是进行异或计算;
  • 计算进位值,对于二进制加法来说,进位值的计算就是各位进行与计算,再向左移一位。
  • 将临时的相加结果赋值给第一个数,将进位结果赋值给第二个数

用java实现的代码如下:

public class Solution {
    public int Add(int num1,int num2) {
        int carry = 1;
        int temp = 0;
        while(carry != 0){
            temp = num1 ^ num2;
            carry = (num1 & num2) << 1;
            num1 = temp;
            num2 = carry;
        }
        return temp;
    }
}
发布了24 篇原创文章 · 获赞 0 · 访问量 233

猜你喜欢

转载自blog.csdn.net/qq_36643449/article/details/104515959
今日推荐