将2的幂次方写成2进制形式后,很容易就发现一个特点:二进制中只有一个1,并且1后面全是0,如果将这个数减去1后会发现,仅有的1会变成0,而其他0则会变成1,所以将已知数和已知数减一进行与运算会发现等于0
#include <iostream>
using namespace std;
int main() //判断一个数是不是2的整数次幂
{
int n;
while (cin >> n)
{
if ((n&(n - 1)) == 0)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
return 0;
}
本文介绍了一种简单的方法来判断一个整数是否为2的幂次方。通过观察2的幂次方在二进制表示下的特性,我们发现它们只包含一个1,其余位均为0。基于这一特性,可以通过位运算实现快速判断。示例代码使用C++实现。
784

被折叠的 条评论
为什么被折叠?



