如何通过位运算判断一个整数是否为2的幂?
判断整数是否为2的幂(位运算实现)
核心原理
2的正整数幂的二进制表示只有一位是1(比如16=10000,8=1000)。当对这类数执行n-1操作时,原二进制中的1会变为0,后面所有低位变为1(比如16-1=15=01111)。此时将n与n-1做按位与运算,结果必然为0。
需要注意:0和负数不可能是2的幂,所以必须先判断n > 0。
代码实现
Java 版本
public static boolean isPowerOfTwo(int n) { return n > 0 && (n & (n - 1)) == 0; }
Python 版本
def is_power_of_two(n): return n > 0 and (n & (n - 1)) == 0
验证示例
- 输入
n=16:16 & 15 = 0,且16>0,返回true - 输入
n=12:12 & 11 = 8 ≠ 0,返回false - 输入
n=1:1 & 0 = 0,且1>0,返回true(1是2^0,符合条件) - 输入
n=0:直接因0>0不成立,返回false
内容的提问来源于stack exchange,提问作者Kushal_Hemanth
相关产品推荐
相关产品推荐

