1.n与n-1按位相与
01 | int 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
建立一个数组,二分法搜索数组判断给出的整数是否能在数组中找到