当前位置:Gxlcms > mysql > 判断一个整数是不是2的整数次幂

判断一个整数是不是2的整数次幂

时间:2021-07-01 10:21:17 帮助过:45人阅读

#includeiostream using namespace std; //第一种方法利用循环 bool MakeDecision(const int M,int pow) //pow表示M是2的多少次幂 { int i=2; int s=1; pow=0; if(M0) return false; if(M==0) return true; do { s*=i; pow; }while(sM); if(s==M) return tru

#include

using namespace std;

//第一种方法利用循环
bool MakeDecision(const int& M,int &pow) //pow表示M是2的多少次幂
{
int i=2;
int s=1;
pow=0;
if(M<0) return false;
if(M==0) return true;
do
{
s*=i;
pow++;
}while(s if(s==M) return true;
else
{
pow=0;
return false;
}
}

//第二种方法,如果M/2是2的整数次幂,那么M就是2的整数次幂,递归实现
bool MakeDecision(int M,int *pow)
{
if(M<0) return false;
if(M%2!=0) return false;
if(M==0) return true;
else if(M==2)
{
*pow=*pow+1;
return true;
}
else
{
*pow=*pow+1;
MakeDecision(M/2,pow);
}
}

//一个是2的整数次幂的整数,它的第0,1,2...都是1,而其余位都是0,这样-M的补码有1位1的位置和M的补码1的位置是相同的
//因此M & -M 就是M
bool MakeDecision(int& M)
{
return M == (M & (-M));
}

void main()
{
cout<<"输入一个大于0的整数:";
int M;
cin>>M;
int pow=0;
//if(MakeDecision(M,&pow)) cout< if(MakeDecision(M)) cout< else cout< }

人气教程排行