从进制的方式考虑,一个数如果为2的幂次方,二进制表现形式肯定为10,100,1000,10000,100000.....等。
那么n-1,二进制数据为01,011,0111,0111,01111...
因此只要让n,n-1两个数按位与‘&’等于零则为2的幂次方
public boolean isPowOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
本文介绍了一种利用二进制特性快速判断一个整数n是否为2的幂次方的方法,通过计算n和n-1按位与的结果为零来确定。核心代码片段展示了如何使用位操作实现这个逻辑。
从进制的方式考虑,一个数如果为2的幂次方,二进制表现形式肯定为10,100,1000,10000,100000.....等。
那么n-1,二进制数据为01,011,0111,0111,01111...
因此只要让n,n-1两个数按位与‘&’等于零则为2的幂次方
public boolean isPowOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
1259
1475

被折叠的 条评论
为什么被折叠?