题目:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如把 9 表示成二进制是 1001,有 2 位是 1 。因此如果输入 9 ,该函数输出 2 。
常规解法:
int numberOf1( int a )
{
int result = 0;
int flag = 1;
while( 0 != flag )
{
if( 0 != ( a & flag ) )
result++;
flag <<= 1;
}
return result;
}
惊喜的解法:
int numberOf1( int n )
{
int result = 0;
while( 0 != n )
{
result++;
n = n & ( n - 1 );
}
return result;
}