<pre name="code" class="cpp"><pre name="code" class="cpp">方法一:
#include <stdio.h>
int main ()
{
int m = 255;
int count_one_bits(int value);
printf("one bits are:%d\n",count_one_bits(m));
return 0;
}
int count_one_bits(int value)
{
int count = 0;
while(value%2 == 1)
{
count++;
value = value/2;
//当实参为1000 0000 0000 0000时,只有一个1也要进行很多次除2运算
//导致效率很低
}
return(count);
}
方法二:
#include <stdio.h>
int main ()
{
int m = 255;
int count_one_bits(int value);
printf("one bits are:%d\n",count_one_bits(m));
return 0;
}
int count_one_bits(int value)
{
int count = 0;
while(value)
{
count++;
value = value & (value-1);
}
return (count);
}
//如:1111 & (1111 - 0001) == 1110
// 1110 & (1110 - 0001) == 1100
// 1100 & (1100 - 0001) == 1000
// 1000 & (1000 - 0001) == 0000
【C语言】写一个函数返回参数二进制中1的位数。
最新推荐文章于 2021-07-01 14:28:36 发布