随笔-174  评论-598  文章-0  trackbacks-0
位操作的运用:

bool Is2Power(int nNum)
{
    
return nNum > 0 ? ((nNum & (~nNum + 1)) == nNum ? true : false) : false;
}
posted on 2006-07-10 23:25 那谁 阅读(1449) 评论(13)  编辑 收藏 引用 所属分类: 算法与数据结构

评论:
# re: [算法问题]判断一个数是不是2的幂? 2006-07-11 09:20 | 橙子
强.  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2006-07-11 09:48 | 3×7=51
将((nNum & (~nNum + 1)) == nNum换成!(nNum & (nNum - 1))也许会更好一点  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2006-07-11 19:30 | LOGOS
过于极至的东西...我完全看不明白  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2006-07-12 09:27 | 沐枫
这个东西,网络上已经存在多时了。  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2006-07-12 16:29 | Ying-Shen
3×7=51  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2006-07-12 16:30 | Ying-Shen
@3×7=51
为什么呢?  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2006-07-12 16:36 | 3×7=51
@Ying-Shen
你将nNum和nNum - 1用2进制打印出来看看就知道为什么了,如果一个数不行的话多试几个数。  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2006-07-17 15:44 | 我爱ACM
好文,收进我的标程库了  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2006-07-30 21:16 | waterflier
是二的幂的数二进制表现方式:
2^1 = 2 10
2^2 = 4 100
2^3 = 8 1000
.......
  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2006-09-23 00:26 | phus
return n&(n-1) == 0;  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2007-10-31 14:59 | 西山老土匪
return n &&(n&(n-1))

比较好 可以测出0 这种特殊情况   回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2008-11-02 10:42 | pxxxb
我有一个比较简单的方法:可以用一行表达式来表示:
#define Pow2(x) x&(x-1)?true:false
具体实现可以通过一个程序来写:
#include "stdafx.h"
#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");
}
  回复  更多评论
  
# re: [算法问题]判断一个数是不是2的幂? 2008-12-05 12:04 | cinzy
nNum^(nNum-1)?false:true;  回复  更多评论
  


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
.NET频道  博客园社区  闪存
网站导航: