不用加减乘除做加法

    xiaoxiao2022-07-07  187

    题目描述:

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

    样例:

    输入:num1 = 1 , num2 = 2 输出:3

    分析:

    借助位运算实现。 第一步只相加不进位即0+0=0,1+1=0,0+1=1,所以对于了二进制的异或运算; 第二步考虑进位,只有在1+1的情况下才会出现进位,所以我们可以当做两个数做与运算然后左移一位; 第三步把前两步的结果相加:相加的过程是重复前面两步直到不产生进位。

    public int add(int num1, int num2) { while(num2!=0) { int temp=num1^num2; num2=(num1&num2)<<1;//当进位值为0时结束循环 num1=temp; } return num1; }
    最新回复(0)