题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
int Count1(int v)
{
int num = 0;
while(v)
{
if(v%2 == 1)
{
num++;
}
v /=2;
}
return num;
}
/* 位移操作代替除、余操作 */
int Count2(int v)
{
int num = 0;
while(v)
{
if(v&0x01)
{
num++;
}
v >>= 1; //右移一位相当于除以2
}
return num;
}
/* 自身减一后进行按位与操作 */
int Count3(int v)
{
int num = 0;
while(v)
{
v &=(v-1);
num++;
}
return num;
}