面试题10:二进制中1的个数

题目描述

请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2。

题目分析

剑指Offer(纪念版)P78

代码实现

 
常规解法
int NumberOf1_Solution1(int n)
{
    int count = 0;
    unsigned int flag = 1;
    while(flag)
    {
        if(n & flag)
            count ++;

        flag = flag << 1;
    }

    return count;
}
能给面试官带来惊喜的解法
int NumberOf1_Solution2(int n)
{
    int count = 0;

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

    return count;
}

  

posted @ 2015-09-23 09:38  枯桃  阅读(116)  评论(0编辑  收藏  举报