不用加减乘除做加法

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号
思路:使用^ 和 & 实现加法运算,
a^b 得到的结果是未进位的值
a&b 左移一位    得到的是进位值
将两个相加就是结果(相加过程重复上述,知道没有进位为止)

代码:

      int Add(int num1, int num2)
    {
        int n = num1 ^ num2;
        int jw = num1 & num2;
        int tmp = 0;
        while(jw)
        {
            jw <<= 1;
             tmp = n;
             n = jw ^ n;
            jw = jw & tmp;
        }
        return n;
    }

或者简化变量的写法;

    public int Add(int num1,int num2) {
        while (num2!=0) {
            int temp = num1^num2;
            num2 = (num1&num2)<<1;
            num1 = temp;
        }
        return num1;
    }

递归写法:

 int Add(int num1, int num2)
    { 
      return num2 ? Add(num1^num2, (num1&num2)<<1) : num1;
 
    }

猜你喜欢

转载自www.cnblogs.com/Lune-Qiu/p/9139934.html