2015-05-22 154 views
4

我不明白以下代码的工作原理吗?如果参数为奇数 ,如果参数为偶数返回false按位运算符的工作原理

function odd($var){ 
    return ($var & 1); 
} 
echo odd(4); /* returns and print 0 */ 
echo odd(5); /* returns and print 1 */ 

这个函数返回true。 它是如何工作的?在二进制

+1

http://php.net/manual/en/language.operators.bitwise.php –

+0

这一切都说明[这里](http://en.wikipedia.org/wiki/Bitwise_operation) – Viral

+0

感谢ü为您的链接 – partho

回答

4

奇数总是有最低显著位(LSB)的1这就是为什么你的代码

function odd($var){ 
    return ($var & 1); 
} 

回报上奇数如此。下面是从你的问题你的例子:

(decimal) 4 & 1 = (binary) 100 & 001 = (binary) 000 = (decimal) 0 = false 
(decimal) 5 & 1 = (binary) 101 & 001 = (binary) 001 = (decimal) 1 = true 

另一种方式把它是

100 (decimal 4) - an even number 
AND 001 (decimal 1) 
    = 000 (decimal 0) - return false 

101 (decimal 5) - an odd number 
AND 001 (decimal 1) 
    = 001 (decimal 1) - return true 
0

它屏蔽了所有位,除了0 &是和运营商。而1是二进制的000000000001。所以它按照它的名称工作。

4

按位比较已经说明了它的作用:它比较一点一点的数字。

如果我们取4位,则4的位表示是:0100. 5的位表示是0101.当我们将它与&(和)进行比较时,它返回两个都设置的位。

0100 & 0001 = 0000 (no bits are the same) 
0101 & 0001 = 0001 (only Least Significant Bit (LSB) is 1)