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
建立一个数组,二分法搜索数组判断给出的整数是否能在数组中找到