程序员面试题100题第22题——整数2进制表示中1的个数

题目:输入一个整数n,求n的2进制表示中1的个数

分析可得:n&(n-1)的操作是将n的2进制表示中最右边的1变成0;

所以能得到对应的代码:

int numOf1(int n)
{
    int count=0;

    while(n)
    {
        count++;
        n=n&(n-1);
    }
    return count;
}

同理判断n是不是2的整数次幂

return !(n&(n-1));

 

posted @ 2012-10-01 21:25  logzh  阅读(240)  评论(0编辑  收藏  举报