当前位置: 代码迷 >> C语言 >> 如何判断一个数是2的幂(用一个表达式) ----帖子里有
  详细解决方案

如何判断一个数是2的幂(用一个表达式) ----帖子里有

热度:98   发布时间:2007-12-25 16:39:35.0
如何判断一个数是2的幂(用一个表达式) ----帖子里有
本人在网上找到一个判断一个数是2的幂的表达式
希望有人写段c还有c++的代码帮我实现一下
#define POW2(X)  (X)&(X-1)?(TRUE):(FALSE)
搜索更多相关的解决方案: 帖子  判断  表达  FALSE  TRUE  

----------------解决方案--------------------------------------------------------
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的幂.谁知道刚好反过来了
----------------解决方案--------------------------------------------------------
非常感谢
----------------解决方案--------------------------------------------------------
  相关解决方案