X&(X-1)的作用

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次幂
 

猜你喜欢

转载自blog.csdn.net/ShWe_yayaya/article/details/81414998
今日推荐