这是什么代码的含义是什么其他的方式完成,而无需使用位移位相同?

if ($n & ($n - 1))
有帮助吗?

解决方案

这个公式检查以查看是否数为2 的功率(如果作为写你的条件为真,则该数目是的二的幂)。

换句话说,测试检查以查看是否有多于一个的“1”比特在$n的二进制表示设置。如果存在零或仅一个比特组,那么你的测试将是假的。

这是迄今为止最有效的方式来确定该属性。

其他提示

首先,这个代码是有效的PHP,那么你的标题是可怜的。

二,二进制算术事情看起来是这样的:

42 = 101010
   &
41 = 101001
-----------
40 = 101000

像格雷格指出,这是检查的2号电源的最快方法,但你给检查代码,看看,如果数字是的不是2功率的。这可以很容易地通过PHP的政策来确定:任何非空/非零值是true

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top