我只是在看array_filter()函數的文檔,他們有下面的代碼返回奇數...
<?php
function odd($var)
{
// returns whether the input integer is odd
return($var & 1);
}
?>
爲什麼$ var & 1返回奇數?這是如何運作的?
我只是在看array_filter()函數的文檔,他們有下面的代碼返回奇數...
<?php
function odd($var)
{
// returns whether the input integer is odd
return($var & 1);
}
?>
爲什麼$ var & 1返回奇數?這是如何運作的?
&
是按位和。它充當$var
位掩碼。所有的奇數結束與1
no bit &1
1 001 1
2 010 0
3 011 1
4 100 0
5 101 1
6 110 0
7 111 1
哇!從來沒有意識到所有的偶數都以二進制0結尾。 – CodeCrack 2011-12-21 19:11:32
您使用的是逐位函數總是返回1時anded
與奇數。
的幾個例子:
11 = 3
01 = 1
----
01 = odd -- return 1 (true)
100 = 4
01 = 1
-----
000 = even -- return 0 (false)
一個更:
10101 = 21
01 = 1
-------
00001 = odd -- return 1 (true)
即函數返回1,如果變種是奇數,否則爲0。 「&」是AND二元運算符,因此它將考慮數字的最後二進制數字。
例如:
5以二進制爲101 - > 101 & 1 = 1 - >奇數。
8位二進制是1000 - > 1000 & 1 = 0 - >偶數。
請參閱http://stackoverflow.com/questions/600202/understanding-phps-operator – AHungerArtist 2011-12-21 18:57:49
另外[參考 - 這是什麼符號在PHP中的意思?](http://stackoverflow.com/questions/3737139/reference- what-does-this-symbol-mean-in-php) – Herbert 2011-12-21 19:33:30