您的位置:首页 > 其它

计算整数中1的二进制位数(负数用补码)

2016-03-13 08:34 302 查看
class Solution {
public:
int  NumberOf1(int n) {
int count=0;
while(n)
{
count++;
n=n&(n-1);
}
return count;

}
};
classSolution
{
    public:     
        int NumberOf1(intn) {         
            int ans = 0;         
            while(n) {             
                if(n & 1) ans++;             
                n = logicalShift(n, 1);         
            }         
            return ans;     
        }    
        //实现逻辑右移    
        int logicalShift(int x, int n) {        
            int tmp = ~(1<< 31); //0x7f ff ff ff        
            tmp = ((tmp >> n) << 1) + 1; //因为n >= 0,实现tmp >> (n-1)的功能       
            tmp = tmp & (x >> n); //        
            return tmp;    
    } 
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: