以前写的计算整数的二进制中包含1的数量的函数真是太弱了。。
今天在书上看到的一个简单方法:
int fun(int x)
{
int count = 0;
while(x)
{
count++;
x = x&(x-1);
}
return count;
}
int main()
{
cout<<fun(9999)<<endl; //9999:10011100001111
return 0;
}
本文介绍了一个高效计算整数二进制表示中1的数量的方法。通过使用位操作,该方法能够在循环中逐步去除最低位的1,直至整数变为0,从而计算出1的总数。
以前写的计算整数的二进制中包含1的数量的函数真是太弱了。。
今天在书上看到的一个简单方法:
int fun(int x)
{
int count = 0;
while(x)
{
count++;
x = x&(x-1);
}
return count;
}
int main()
{
cout<<fun(9999)<<endl; //9999:10011100001111
return 0;
}
被折叠的 条评论
为什么被折叠?