求一个十进制数转化成二进制后bit为0或1的个数
1、首先解决bit为1的个数,函数如下:
int CountOneNum (int n)
{
int count = 0;
while (n)
{
n = n & (n - 1);
count ++;
}
return count;
}
2、求bit为0的个数,这种做法在复杂度上比(1)大,因为(1)的循环次数只与二进制数中1的个数一样,而下面算法的时间复杂度为 log(n),函数如下:

这篇博客介绍了如何求解一个十进制数转化为二进制后,二进制表示中0和1的个数。提供了四种方法,包括直接计算1的个数、计算0的个数以及通用的n进制转换后的k个数计数,最后还提到了使用位操作的方法。
最低0.47元/天 解锁文章
1983

被折叠的 条评论
为什么被折叠?



