美文网首页
数字的二进制的1的个数

数字的二进制的1的个数

作者: packet | 来源:发表于2019-03-22 20:38 被阅读0次

    最直观的方法是把一个数的二进制,一个一个的计数。但是二进制数有巧算,代码如下:

        int count(int n) {
            int cnt = 0;
            while (n != 0) {
                cnt++;
                n = n & (n - 1);
            }
            return cnt;
        }
    

    其依据是n & (n -1),能已消除最右边的1。
    这个方法有两点需要注意:

    1. 当n < 0时,这个方法同样适用。比如-1有32个1
    2. 判断一个数是不是2^n,可以测试n & (n -1 ) == 0

    相关文章

      网友评论

          本文标题:数字的二进制的1的个数

          本文链接:https://www.haomeiwen.com/subject/xyhdvqtx.html