题解 | #二进制中1的个数#

不用加减乘除做加法

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

记录题解。
两个二进制的相加结果是用一个异或门实现的;
两个二进制的进位结果是用一个与门来实现的。

public class Solution {
    public int Add(int num1,int num2) {
         int result = 0;
         int carry = 0;
        do{
            result = num1 ^ num2;       //不带进位的加法
            carry = (num1 & num2) << 1; //进位
            num1 = result; 
            num2 = carry;  
        }while(carry != 0); // 进位不为0则继续执行加法处理进位
        return result;
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务