不用加减乘除做加法

Posted 樱圃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不用加减乘除做加法相关的知识,希望对你有一定的参考价值。

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:既然不能用四则运算符号,那么只能考虑用位运算符啦。考虑,如5+7=12,5为101,7为111,两者先做不加进位的运算,101+111=010,进位为1010(这一部分可以看成是101&111=101,然后将101左移一位变为1010),类似地,仍将进位的结果1010和不加进位的加法010,继续上一步,010-》5,1010-》7,不加进位加为1000,进位为100,同理,继续相加,1000-》5,100-》7,不加进位加为1100,进位为0000,至此,进位为0,算法结束。
 public int Add(int num1,int num2) {
        if(num1 == 0 && num2==0) return 0;
        if(num1 !=0 &&num2==0) return num1;
        if(num1==0&&num2!=0) return num2;
        int sum=0;
        int carray=0;
        do{
          sum = num1^num2;
          carray = (num1&num2)<<1;
          num1 = sum;
          num2 = carray;
        }while(num2!=0);
         return sum;
    }

 

以上是关于不用加减乘除做加法的主要内容,如果未能解决你的问题,请参考以下文章

66 不用加减乘除做加法

[剑指offer]面试题47:不用加减乘除做加法

LeetCode-剑指Offer 65-不用加减乘除做加法

LeetCode-剑指Offer 65-不用加减乘除做加法

基础编程题之不用加减乘除做加法

剑指offer——不用加减乘除做加法