题解 | #不用加减乘除做加法#

不用加减乘除做加法

https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param num1 int整型 
 * @param num2 int整型 
 * @return int整型
 */
//思路:
//首先理解相关知识:
    //1、按位与&,有0得0,
    //2、按位异或^,相同为0,相异为1
    //3、按位异或可以算出没有进位的相加结果sum
    //4、按位与,算出进位结果,进位结果左移一位得forward,
    //5、然后将sum和forward重复上面的步骤3,4。直到forward中没有进位,即forward=0
                
int Add(int num1, int num2 ) 
{
    // write code here
    int sum, forward;
    do {
    sum = num1 ^ num2;    //17(10001),5(00101),sum = 10111
    forward = (num1 & num2)<<1;
    num1 = sum;
    num2 = forward;
    }while (num2 != 0);

    return num1;
}

全部评论

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务