• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 4年前 (2022-01-09) 11次浏览 已收录 0个评论

#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<M);
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))本文来源gao($daima.com搞@代@#码8网^;
}

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:判断一个整数是不是2的整数次幂
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址