题目描述:
对于任意非负整数,求二进制展开位中的1的个数
算法分析:
算法实现:
#include <iostream>
using namespace std;
int countOnes(unsigned int n)
{
int ret = 0;
while(n) //数据仍然大于0
{
if(n & 1) //如果二进制最后是1就计数
{
ret++;
}
n = (n >> 1); //相当于减小二倍
}
return ret;
}
int main()
{
//0x1000101011
cout << "555:" << countOnes(555) << endl;
//1010011010
cout << "666:" << countOnes(555) << endl;
}
算法分析:
| 算法名称 | 时间复杂度(平均) | 时间复杂度(最坏) | 时间复杂度(最好) | 空间复杂度 |
|---|---|---|---|---|
| O( | O( | O( | 0(1) |
每次右移一次,n减半,
本文介绍了一种用于计算任意非负整数在二进制表示中1的数量的算法。通过位操作和循环右移,算法实现了高效计算,并分析了其时间复杂度。
956

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



