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

不用加减乘除做加法

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

public class Solution {
    public int Add(int num1,int num2) {
        // 思路:位运算
        // 1、两个数异或,相当于每一位相加,而不考虑进位
        // 2、两个数相与,并左移一位:相当于求得进位
        // 3、将上述两步的结果相加。
        // 4、循环结束条件时,当进位为0的时候,证明它们相异或的就是要的结果
        // 难点在于,大多数人想到不到循环结束条件是什么
        // 参考评论区一位大佬的
        while(num2 != 0){
            int sum = num1 ^ num2;
            int carry = (num1 & num2) << 1;
            num1 = sum;
            num2 = carry;
        }
        return num1;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务