#include
int main(){  int num=0;  int count=0;  scanf("%d",&num);while(num){  count++;  num=num&(num-1);}printf("count=%d\n",count);return 0;}
&是按位与,就是把一个数写成二进制然后按位与,因为1与1为1,1与0为0,所以可以找出每个1和0,然后数出1的个数

&也可以判断num是否为2的n次方num=num&(num-1);如果num等于0,则num就为2的n次方。