普通方法
int countOnes(int num) {
// write your code here
int count = 0;
for(int i = 0;i<32;i++)
{
if((num & 1) == 1)
count++;
num >>= 1;
}
return count;
}
简练代码
//int countOnes(int num)
//{
// int count = 0;
// for(int i =0;i<32;i++)
// {
// count+=(num&1);
// num >>= 1;
// }
// return count;
//}
快速法
循环只有count(1的个数)次,就是每次将最低位的1直接去除。但是只适用于正数。
int countOnes(unsigned num)
{
unsigned int i = 0;
for(i;num;i++)
{
num = num & (num-1);
}
rerturn i;
}
本文介绍了三种计算整数二进制表示中1的数量的方法:普通方法、简练代码及快速法。快速法特别指出仅适用于正数,并通过移除最低位的1来减少循环次数。
432

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



