Ali*_*xel 6 php bit-manipulation bitwise-and
这段代码意味着什么,以及在不使用位移的情况下以其他方式实现同样的目标?
if ($n & ($n - 1))
Run Code Online (Sandbox Code Playgroud)
Gre*_*ill 17
该公式检查一个数字是否是2的幂(如果你写的条件是真的,那么这个数字不是2的幂).
换句话说,您的测试检查是否在二进制表示中设置了多个"1"位$n.如果设置为零或仅设置一个位,那么您的测试将为假.
它是迄今为止确定该财产的最有效方式.
首先,这段代码是有效的PHP,所以你的标题很差.
其次,二进制算法看起来像这样:
42 = 101010
&
41 = 101001
-----------
40 = 101000
Run Code Online (Sandbox Code Playgroud)
像格雷格所说的那样,这是检查2数字幂的最快方法,但你给出的代码检查这个数字是不是2的幂.这可以通过PHP的策略轻松确定:任何非null /非零值都为真.
| 归档时间: |
|
| 查看次数: |
3915 次 |
| 最近记录: |