二进制中1的个数

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

思路

  1. 可以使用位运算来处理。
  2. n & (n-1) 结果中1的个数比n少一个。
  3. 在位运算时,负数就是用补码运算的,所以不需要特殊处理。

ps:补码为原码各个位置取反,最后在末位加1。

例如:4 & 3 = 0 (1个1 变成了 0个1)、5 & 4 = 4 (2个1 变成了 1个1)

Java代码实现

    public int NumberOf1(int n) {
        int res = 0;
        while( n !=  0){
            res++;
            n = n & (n-1);
        }
        return res;
    }
全部评论

相关推荐

爱吃烤肠的牛油最喜欢...:50K是ssp了估计,ssp的人家多厉害都不用说,每年比例大概在百分之5左右
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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