写一个参数返回二进制中1的个数:
例如:7 0000 0111 返回:3
涉及到二进制就要想到有关二进制的运算,目前能想到的是与,或,非,左移,右移。题目要求求出1的个数,那么在函数内每次得到二进制的一个1后就要想办法去掉这个1,直到这个二进制的值变为0停止。与运算:俩个数相与,只有相同字节位都为1时结果才为1,有一个是0结果就是0。貌似符合题目要求,只要每次得到一个1就让它与0相与。与运算中n&(n-1)恰好满足要求。。。
代码:
int OneInBinary(int n)
{
int count = 0;
while(n)
{
count++;
n = n & (n-1);
}
return count;
}