我曾经遇到过一种方法,通过执行以下操作来确定数字x是否为2的幂:
X&(x-1)后跟0测试,如果结果为0那么这意味着数字中只有1位,并且它是2的幂。但问题是它不能用于签名int?我只是想知道签名int的唯一例外是它可能是唯一一位的有符号位,如果是这种情况我可以简单地添加另一个测试并完成它。或者它有其他例外,这个方法可能不适用于signed int。因为我真的想在java中使用它,我希望我能以一些增强的方式采用它。非常感谢。
答案 0 :(得分:2)
没关系;只测试底片。正数的幂绝不是负数,所以你可以有把握地说任何给定的负数不是2的幂。