判断一个整数是否为2的n次幂(算法)

时间:2021-05-08 15:13:49
1.n与n-1按位相与
01 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.不断相除
01 int 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 建立一个数组,二分法搜索数组判断给出的整数是否能在数组中找到