题解 | #二进制中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;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 12:22
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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