解法1:将原数字除以2,若有余数,则表示其最后一位为1.
code:
int Count(int v)
{
int num = 0 ;
while(v)
{
if(v % 2 == 1)
++num;
v /= 2;
}
return num;
}
解法2:将数字最后一位与1进行与操作,若为1则表示该数字最后一位为1.
code:
int Count(int v)
{
int num = 0 ;
while(v)
{
num += v & 0x01;
v>>=1;
}
return num;
}
解法3:v&(v-1)
code:
int Count(int v)
{
int num = 0 ;
while(v)
{
v &= (v-1);
++num;
}
return num;
}
解法4:分支操作。switch-case
解法5:查表