欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-04-26 19:42:54
...

#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 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 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 int M;
cin>>M;
int pow=0;
//if(MakeDecision(M,&pow)) cout if(MakeDecision(M)) cout else cout }