比如,3二进制表示为00000011
,那么1的个数为2。
方法一
就3来说,我们我们将3除2,余数如果是1,那么表示有一个1。循环的除最终结果就是想要的
int counts1(int v)
{
int counts = 0;
while(v)
{
if(v%2 == 1)
{
counts++;
}
v/=2;
}
return counts;
}
方法二
基本和上面的相似,但是比较和除2,还为位操作。
int counts2(int v)
{
int counts = 0;
while(v)
{
counts += v & 0x01;
v>>=1;
}
return counts;
}
方法三
方法三是一个和位操作相关的方法,有点看不懂。先放弃。
方法四
查表操作。
把所有可能的值全部放在数组中,然后需要的时候直接查数组。
网友评论