dan*_*n04 45
一种方法是使用按位AND.如果数字$x
是2的幂(例如,8 = 1000),则它与其前任(7 = 0111)没有共同的位.所以你可以写:
($x & ($x - 1)) == 0
Run Code Online (Sandbox Code Playgroud)
注意:这将为$ x == 0提供误报.
从数字中减去1,然后用原始数字减去它.如果结果为零,则为2的幂.
if (((n-1) & n) == 0) {
// power of two!
}
Run Code Online (Sandbox Code Playgroud)
(抱歉,我的PHP生锈...)