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

二进制中1的个数

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

#include <cstdint>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return int整型
     */
    int NumberOf1(int n) {
        // write code here
        int count  = 0;

        while (n) {
            // flag = 1, 2, 4, 8, 32, 64....
            ++count;
            n = (n -1) & n;
        }
        return count;;
    }
};

根据 对 n 和 n-1 的二进制规律, 我们知道:

如果 n = 0x10001 ,那么 n-1 = 0x10000, 里面的最后1位1 就消失了

如果想移动,那么可以去与, 0x10000;

note_coding 文章被收录于专栏

记录自己的解题思路, 欢迎评价

全部评论

相关推荐

03-31 16:42
已编辑
郑州西亚斯学院 后端
Java抽象带篮子:你简历少了几个模块看上去就感觉信息很少,简历怎么写可以看看我发的帖子
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务