位操作的运用:

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

    比较好 可以测出0 这种特殊情况   回复  更多评论   
  • # re: [算法问题]判断一个数是不是2的幂?
    pxxxb
    Posted @ 2008-11-02 10:42
    我有一个比较简单的方法:可以用一行表达式来表示:
    #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");
    }
      回复  更多评论   

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