如何判断一个数是2的幂(用一个表达式) ----帖子里有
本人在网上找到一个判断一个数是2的幂的表达式希望有人写段c还有c++的代码帮我实现一下
#define POW2(X) (X)&(X-1)?(TRUE):(FALSE)
----------------解决方案--------------------------------------------------------
X的Y方
#include <math.h>
#include <stdio.h>
int main(void)
{
double x = 2.0, y = 3.0;
printf("%lf raised to %lf is %lf\n", x, y, pow(x, y));
return 0;
}
----------------解决方案--------------------------------------------------------
我不是这个意思
我是说用#define POW2(X) (X)&(X-1)?(TRUE):(FALSE)实现
判断x是否是2的幂
----------------解决方案--------------------------------------------------------
楼主给的式子似乎结果不对。
bool pow2(int x)
{
return x&(x-1)?false:true;
}
----------------解决方案--------------------------------------------------------
#define TRUE 1
#define FALSE 0
#define POW2(X) (X)&(X-1)?(TRUE):(FALSE)
int main()
{
int i=65536;
if(POW2(i))
printf("True");
else
printf("False");
return 0;
}
----------------解决方案--------------------------------------------------------
楼上的是对的
不过好像反了
#include"stdio.h"
#define TRUE 1
#define FALSE 0
#define POW2(X) (X)&(X-1)?(TRUE):(FALSE)
void main()
{
int i;
printf("请输入一个整数\n");
scanf("%d",&i);
if(POW2(i))
printf("false\n");
else
printf("true\n");
}
----------------解决方案--------------------------------------------------------
顺便问一下
c++中不是有布儿型吗
可不可以用c++写个类似的
也就可以不用定义ture 和 false了吗
----------------解决方案--------------------------------------------------------
#define TRUE 1
#define FALSE 0
#define POW2(X) (X)&(X-1)?(TRUE):(FALSE)
这三句换成
#define POW2(X) (X)&(X-1)?(true):(false)
就可以在c++里面用了,要注意大小写,c++中的布尔型所有字母都是小写.
我前面的程序没调试过,看了看的确反了,原因是我想当然的以为上面的宏定义中,TRUE表示的是2的幂,而FALSE表示不是2的幂.谁知道刚好反过来了
----------------解决方案--------------------------------------------------------
非常感谢
----------------解决方案--------------------------------------------------------