所以我是编程的初学者我刚开始使用PHP而且我正在编写一个编程挑战,我必须编写一个程序来判断输入的数字是否为2的幂,无论如何在完成我看到的挑战后答案,然后他们的代码更简单,我怎么说它更优雅。
这里是
if(($n & ($n - 1)) == 0)
{
return "$n is power of 2";
}
现在我不明白的是,ANDing怎么样,让我们说2和2告诉我3是2的幂是不是?
实际上我认为我不理解$ n AND($ n-1)== 0然后它的2的力量我不明白那个公式"如果它是一个公式"比如两者的二进制比较然后如果结果是否则那么它的2的幂是没有意义的
答案 0 :(得分:0)
让我们获得一些示例
二进制中的2是10
(2-1)=二进制的1是1
&
符合逻辑或 - http://php.net/manual/en/language.operators.bitwise.php
10
and 01
= 00
下一个带有4
的示例二进制4是100
(4-1)= 3,二进制是11
100
and 011
is 000
8是
二进制7是0111
1000和0111 = 0
参见两个权力表
正如您所看到的,2的所有幂都具有以下格式:1后跟0多次(正则表达式/ 10 + /) n-1是01111
这种方式你总是有
100000000....
and 011111111....