输出该数二进制表示中1的个数

来源:互联网 发布:网络教育官网 编辑:程序博客网 时间:2024/06/05 15:34

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



class Solution {
public:
     int  NumberOf1(int n) {
         // 2017-6-18 用位不太理解这种做法
         int cnt=0;
             while(n!=0)
                {
                   n=n&(n-1);
                  cnt++;
                }
         return cnt;
     }
};

第二种解法:

int BitCount4(unsigned int n) {     n = (n &0x55555555) + ((n >>1) &0x55555555) ;     n = (n &0x33333333) + ((n >>2) &0x33333333) ;     n = (n &0x0f0f0f0f) + ((n >>4) &0x0f0f0f0f) ;     n = (n &0x00ff00ff) + ((n >>8) &0x00ff00ff) ;     n = (n &0x0000ffff) + ((n >>16) &0x0000ffff) ;     return n ; }

阅读全文
0 0