现在有一个数n这个n是整数。所以要把正整数和负整数考虑在内现在问这个n是不是2的幂现在对n的取值进行讨论画出二的幂函数可以看到当n小于等于0时x无取值所以小于等于0的n不是2的幂。所以只需要讨论n大于0时的情况即可。下面是三种解决方案1循环法bool isPowerOfTwo(int n) { if (n 0) return false; while (n % 2 0) n / 2; return n 1; }2位运算bool isPowerOfTwo(int n) { return n 0 (n (n - 1)) 0; }原理2 的幂的二进制只有一个 1n (n-1)会把最低位的 1 去掉结果为 0。3利用int_minbool isPowerOfTwo(int n) { return n 0 (1 30) % n 0; // 2^30 是 int 范围内最大的 2 的幂 }