判断一个数n是否为2的幂,只需要判断n&(n-1)是否为0,若为0,则为2的幂。因为二进制的位数刚好是按2的幂数展开的。一个数是否为2的幂,则其除了首位外其他位数都应该是0;
例如:4 8
为 0100 1000
&0011 & 0111
------- -----------
0000 0000 为2的幂
5
为 0101
&0100
--------
1110 不为2的幂
#include<iostream>
using std::cin;
using std::endl;
using std::cout;
int IsPowerOfTwo(int n)
{
return (n&(n - 1)) == 0 ? 1 : 0;
}
int main()
{
int a;
cin >> a;
cout << "是否2的幂数: " << IsPowerOfTwo(a) << endl;
system("pause");
return 0;
}