美文网首页
剑指offer-11-二进制中1的个数

剑指offer-11-二进制中1的个数

作者: Buyun0 | 来源:发表于2018-08-06 21:43 被阅读0次

    二进制中1的个数

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

    思路:n &= n-1时就可以消去一个1;
    比如n(10) = 11时
    n(2) = 1011

    n n&n-1 1的个数(操作次数)
    1011 1011&1010 = 1010 1
    1010 1010&1001 = 1000 2
    1000 1000&0111 = 0000 3

    n = 0,结束,3个1。

    class Solution {
    public:
         int  NumberOf1(int n) {
             int nn = 0;
             while(n!= 0){
                 nn++;
                 n &= n-1;
             }
             return nn;
         }
    };
    

    相关文章

      网友评论

          本文标题:剑指offer-11-二进制中1的个数

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