17.不用加减乘除做加法

    xiaoxiao2022-07-03  119

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

    解析:不用四则运算只能用二进制相加的方法 ①首先对两个整数进行异或得到,此时不考虑进位,例如5和17异或得到10100; ②再对两个数进行与运算得到进位,进位位置的左移一位为实际进位,5&17<<1=10; ③将上述两个结果相加得到10110—>22,这里注意如果相加还是有进位则重复①②步骤,直到没有进位。

    public int Add(int num1,int num2) {       int re = 0;       //如果进位不为0,则重复步骤       while (num2!=0){      //1首先进行异或运算,不算进位相加       re = num1^num2;       //2两数进行与运算,求得进位       int index = (num1&num2)<<1;       //3.将上述结果相加即得到和       num1 = re;       num2 = index;       }       return num1;      }
    最新回复(0)