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

二进制中1的个数

http://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8

public class Solution {
    public int NumberOf1(int n) {

        /*
        原理:通过位移(与运算)来统计整数中与1的个数,判断哪个位置是否是1,
            则让它与一个整数(那个位置为1,其他的位置都为0)进行与运算。
            如果结果为0,则那个位置是0;否则为1.
        例如:10--->1010,辅助变量(temp)每进行一次与运算都需要右移一位
        1010 & 1 = 0;
        1010 & 10 = 1;
        1010 & 100 = 0;
        1010 & 1000 = 1;
        */
        int count = 0;//计数器
        int temp = 1;//辅助变量
        for(int i =0;i<32;i++){
            if((temp&n) != 0){//与运算
                count++;
            }
            temp <<= 1;//右移一位
        }
        
        return count;
    }
}
全部评论

相关推荐

赛博小保安:你这简历没啥大问题的,经历技能也足够了,问题应该就是出在出身了,学院本就是这样,HR忙着跟92的勾搭呢,哪有心思看我们这些双非😿😭
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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