我不明白以下代碼的工作原理嗎?如果參數爲奇數 ,如果參數爲偶數返回false按位運算符的工作原理
function odd($var){
return ($var & 1);
}
echo odd(4); /* returns and print 0 */
echo odd(5); /* returns and print 1 */
這個函數返回true。 它是如何工作的?在二進制
我不明白以下代碼的工作原理嗎?如果參數爲奇數 ,如果參數爲偶數返回false按位運算符的工作原理
function odd($var){
return ($var & 1);
}
echo odd(4); /* returns and print 0 */
echo odd(5); /* returns and print 1 */
這個函數返回true。 它是如何工作的?在二進制
奇數總是有最低顯著位(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 &
是和運營商。而1
是二進制的000000000001
。所以它按照它的名稱工作。
按位比較已經說明了它的作用:它比較一點一點的數字。
如果我們取4位,則4的位表示是:0100. 5的位表示是0101.當我們將它與&(和)進行比較時,它返回兩個都設置的位。
0100 & 0001 = 0000 (no bits are the same)
0101 & 0001 = 0001 (only Least Significant Bit (LSB) is 1)
http://php.net/manual/en/language.operators.bitwise.php –
這一切都說明[這裏](http://en.wikipedia.org/wiki/Bitwise_operation) – Viral
感謝ü爲您的鏈接 – partho