《剑指Offer》11二进制中1的个数

题目:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:
思路其实挺简单的,把n和1做与运算,判断n的最低位是不是为1.接着把1左移一位得到2,再和n做与运算,
就能判断n的次低位是不是1......
public class Solution {
    public int NumberOf1(int n) {
        int count=0;
        int flag=1;
        while(flag!=0) {
            if ((n&flag)!=0) {
                count++;
            }
            flag=flag<<1;
        }
        return count;
    }
}
在上面这个解法中,循环的次数等于整数二进制的位数,32位的整数需要循环32次。
还有一种算法,整数中有几个1就只需要循环几次。以后如果有时间再写。
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 15:58
投个小米提前批试试水,先投一个岗位看看形势,不行就再沉淀一下投第二个岗位,莫辜负
Java抽象带篮子:我嘞个骚刚,已经开始研发6g了吗
投递小米集团等公司7个岗位
点赞 评论 收藏
分享
06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 11:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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