需要帮助理解关于(AND)的基本编程核心概念

时间:2017-06-25 18:26:18

标签: php

所以我是编程的初学者我刚开始使用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的幂是没有意义的

1 个答案:

答案 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

参见两个权力表

enter image description here

正如您所看到的,2的所有幂都具有以下格式:1后跟0多次(正则表达式/ 10 + /) n-1是01111

这种方式你总是有 100000000.... and 011111111....