1.统计二进制数X中1的个数
如以下代码:
#include
int fun(int n)
{
int tmp=0;
while(n)
{
tmp++;
n=n&(n-1);
}
return tmp;
}
int main()
{
printf("%d\n",fun(4));
printf("%d\n",fun(20));
return 0;
}
运行结果:
4的二进制是 100(1个1)
20的二进制是 10100(2个1)
2.判断一个数x是不是2的n次幂
bool Fun1(int n)
{
if((n&(n-1))==0)
{
return 1;
}
return 0;
}
int main()
{
printf("%d\n",Fun1(4));
printf("%d\n",Fun1(5));
return 0;
}
运行结果:
4是2的2次幂
5不是2的n次幂