轉自http://blog.csdn.net/qq_26768741/article/details/50917787
今天我來分享一個判斷一個數是否是2的n次方巧妙方法:
代碼如下:
#include<stdio.h>
int main()
{
int num;
scanf("%d", &num);
while (num)
{
if (((num) & (num - )) == )
printf("%d", num);
break;
}
system("pause");
return ;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
在這裡面,我們使用了num&(num-1)的運算。
當我們演算下會發現一個規律。

、
在這裡我麼你就會發現對于一個數,n&(n-1)會一直等于0。
是以我們可以将這個方法來判斷一個數是不是2的n次方。