使用位运算来确定一个int是否是2的幂



我曾经遇到过一种方法,通过执行以下操作来确定数字x是否是2的幂:

X&(x-1)之后进行0测试,如果结果为0,则表示该数字中只有一个1位,并且它是2的幂。但问题是它不能用于signed int?我只是想知道是否有符号int的唯一例外是它可能是唯一一个位的有符号位,如果是这种情况,我可以简单地添加另一个测试并完成它。或者它是否有其他异常,该方法可能不适用于有符号int类型。因为我真的很想在java中使用它,我希望我能以某种增强的方式采用它。非常感谢。

没关系;只要测试一下底片就行了。正数的幂绝不是负的,所以你可以有把握地说,给定的任何负数都不是2的幂。

最新更新