什么是按位码“$ N&($ N - 1)”吗?
-
20-09-2019 - |
题
这是什么代码的含义是什么其他的方式完成,而无需使用位移位相同?
if ($n & ($n - 1))
解决方案
这个公式检查以查看是否数为2 的功率(如果作为写你的条件为真,则该数目是不的二的幂)。
换句话说,测试检查以查看是否有多于一个的“1”比特在$n
的二进制表示设置。如果存在零或仅一个比特组,那么你的测试将是假的。
这是迄今为止最有效的方式来确定该属性。
其他提示
首先,这个代码是有效的PHP,那么你的标题是可怜的。
二,二进制算术事情看起来是这样的:
42 = 101010
&
41 = 101001
-----------
40 = 101000
像格雷格指出,这是检查的2号电源的最快方法,但你给检查代码,看看,如果数字是的不是2功率的。这可以很容易地通过PHP的政策来确定:任何非空/非零值是true
不隶属于 StackOverflow