判断一个整数是不是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
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
}
下一篇: C语言表达式中的类型隐式转换
推荐阅读
-
编写程序: 从键盘上输入一个整数x,判断其奇偶性;当x满足 x%2==0(即x是2的倍数)时,输出x是偶数;反之,输出x是奇数(x为具体的数值)。
-
任何一个正整数都可以用2的幂次方表示:137=2^7+2^3+2^0
-
leecode-1 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n =3x
-
1)的累加和(累乘积(阶乘))。其中n的值从键盘输入。输入一个2000年以后的年份n,输出所有介于2">
PTA判断输入的整数是否是素数,如果是则输出"1",否则输出"0." 编写程序,求自然数1至n(n>1)的累加和(累乘积(阶乘))。其中n的值从键盘输入。输入一个2000年以后的年份n,输出所有介于2
-
js 判断一个数字是不是2的n次方幂的实例
-
判断一个整数是否2的阶次
-
如何用一个语句判断一个整数是不是二的整数次幂?
-
如何用一个语句判断一个整数是不是二的整数次幂?
-
js 判断一个数字是不是2的n次方幂的实例
-
判断一个整数是不是2的整数次幂