问题描述:
计算一个10进制的二进制展开数中1的个数。
比如:
n = 441(10) = 110111001(2)
6
--------------------------------
Process exited with return value 0
Press any key to continue . . .
计算一个10进制的二进制展开数中1的个数。
比如:
n = 441(10) = 110111001(2)
//计算二进制数字里面1的个数
#include<stdio.h>
int main()
{
int ones = 0;
unsigned int n = 441; //441 = 110111001
while (0 < n)
{
ones += (1 & n); //检查最低位,若为1则计数
n >>= 1; //右移一位 110111001
} // -> 011011100
printf("%d\n",ones);
return 0;
}
运行结果:
6
--------------------------------
Process exited with return value 0
Press any key to continue . . .