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

相关推荐

10-29 19:45
吉林大学 Java
从零开始数:自我评价没有必要写,但是看起来你应该是学了csdiy的一些课程,可以在专业技能里面写上自己比较熟悉操作系统和计网,但如果你是找Java的话,把第一个项目换了吧,现在看起来有点四不像。 无论是黑马点评或者说做个轮子项目,刷题和八股也搞起来吧,而且也没必要等到寒假,最近就可以开始找,找到就偷偷实习呗,别被逮到就行了。
点赞 评论 收藏
分享
少年郎as:这不把公司名贴出来那我可要喷你了哦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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