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生锈...)
| 归档时间: |
|
| 查看次数: |
6698 次 |
| 最近记录: |