判断一个整数是否为2的n次幂

3733阅读 0评论2012-11-20 Helianthus_lu
分类:

1.n与n-1按位相与
01int bool floor_7(int num)
02{
03    if (num <= 1)
04    {
05        return false;
06    }
07    else
08    {
09        return ((num & (num - 1)) == 0) ? true : false;
10    }
11}

2.不断相除
01int Check1(int num)
02{
03    int i = 1;
04    while (true)
05    {
06        if (i > num)
07            return false;
08        if (i == num)
09            return true;
10        i = i * 2;
11    }
12 
13}

3.建一个数组,如果是32位机器,那么2的n次幂只有32种情况,2^0, 2^1, 2^2, ......... 2^31
建立一个数组,二分法搜索数组判断给出的整数是否能在数组中找到
上一篇:排序
下一篇:ubuntu下编译内核出错解决办法