第一种方法,暴力穷举
#include <iostream>
using namespace std;
int main()
{
int num;
int temp=1,flag=0;
cin>>num;
while(temp<=num)
{
if(temp==num)
flag=1;
temp*=2;
if(flag==1)
{
cout<<"该数是2的整数次幂";
break;
}
}
return 0;
}
第二种方法就是把每次乘2的操作变成移位,比上述优化一点点;
第三种方法就厉害了,通过二进制位的表达发现,一个数如果是2的整数次幂,那么 它与它的前一位数相与为0
实现的代码只有一行
bool is(int n)
{
return (n&n-1)==0;
}
本文介绍三种方法判断一个数是否为2的整数次幂:暴力穷举、位移优化及二进制位表达法。代码示例使用C++实现,包括逐次乘2比较、左移替代乘法及利用二进制特性进行快速判断。
2995

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



