| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 597 人关注过本帖
标题:如何判断一个数是2的幂(用一个表达式) ----帖子里有
收藏  订阅  推荐  打印 
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27
如何判断一个数是2的幂(用一个表达式) ----帖子里有

本人在网上找到一个判断一个数是2的幂的表达式
希望有人写段c还有c++的代码帮我实现一下
#define POW2(X)  (X)&(X-1)?(TRUE):(FALSE)
搜索更多相关主题的帖子: 帖子  判断  表达  FALSE  TRUE  
2007-12-25 16:39
万兽无缰
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:296
积分:3226
注册:2007-8-27

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;
}

女朋友问我想怎么死~~~
             我说我想"爽死"
2007-12-25 17:07
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27

我不是这个意思
我是说用#define POW2(X)  (X)&(X-1)?(TRUE):(FALSE)实现
判断x是否是2的幂

2007-12-25 18:34
lonmaor
Rank: 12Rank: 12Rank: 12
来自:Zz.
等级:版主
威望:11
帖子:578
积分:5104
注册:2007-11-27

楼主给的式子似乎结果不对。
bool pow2(int x)
{
    return x&(x-1)?false:true;
}
2007-12-25 18:59
永夜的极光
Rank: 12Rank: 12Rank: 12
等级:版主
威望:17
帖子:2666
积分:34005
注册:2007-10-9

#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;
}

从BFS(Breadth First Study)到DFS(Depth First Study)
学习VIM中,欢迎访问我的blog  http://hi.baidu.com/newkedison
严重鄙视一切把论坛当成作业生成器和人肉搜索引擎的人
2007-12-25 20:05
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27

楼上的是对的
不过好像反了
#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");
}

2007-12-25 20:49
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27

顺便问一下
c++中不是有布儿型吗
可不可以用c++写个类似的
也就可以不用定义ture 和 false了吗

2007-12-25 20:51
永夜的极光
Rank: 12Rank: 12Rank: 12
等级:版主
威望:17
帖子:2666
积分:34005
注册:2007-10-9

#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的幂.谁知道刚好反过来了

从BFS(Breadth First Study)到DFS(Depth First Study)
学习VIM中,欢迎访问我的blog  http://hi.baidu.com/newkedison
严重鄙视一切把论坛当成作业生成器和人肉搜索引擎的人
2007-12-26 08:23
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27

非常感谢

2007-12-26 14:08
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.047700 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved