Chinaunix首页 | 论坛 | 博客
  • 博客访问: 429179
  • 博文数量: 132
  • 博客积分: 2511
  • 博客等级: 大尉
  • 技术积分: 1385
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-11 15:10
文章分类

全部博文(132)

文章存档

2012年(18)

2011年(35)

2010年(60)

2009年(19)

分类: C/C++

2010-04-07 11:33:57

看到这篇文章(From那谁的博客)后,也写一下。。
分析2的幂值的特征,二进制如下:1,10,100,1000。。
都是1后面带n(n>=0)个0,因此可以写出如下判断函数(负数看成不是2的幂。。):

short is2power(int n)
{
    if(n <= 0)
    {
        return 0;
    }

    return !(n & (n-1));
}


测试代码:

#include <stdio.h>

#define N 1000

int main()
{
    int i;

    for(i = 0;i < N;i ++)
    {
        if(is2power(i))
        {
            printf("%u ", i);
        }
    }

    printf("\n");
    return 0;
}


阅读(634) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~