求一个整数转换为二进制数后有几个1

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