您好,欢迎访问一九零五行业门户网

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

#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}
其它类似信息

推荐信息