2011-12-21 22 views
2

可能重複:
Understanding PHP's & operator這個php代碼如何返回奇數?

我只是在看array_filter()函數的文檔,他們有下面的代碼返回奇數...

<?php 
    function odd($var) 
    { 
     // returns whether the input integer is odd 
     return($var & 1); 
    } 
    ?> 

爲什麼$ var & 1返回奇數?這是如何運作的?

+2

請參閱http://stackoverflow.com/questions/600202/understanding-phps-operator – AHungerArtist 2011-12-21 18:57:49

+0

另外[參考 - 這是什麼符號在PHP中的意思?](http://stackoverflow.com/questions/3737139/reference- what-does-this-symbol-mean-in-php) – Herbert 2011-12-21 19:33:30

回答

6

&是按位和。它充當$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

哇!從來沒有意識到所有的偶數都以二進制0結尾。 – CodeCrack 2011-12-21 19:11:32

3

您使用的是逐位函數總是返回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) 
0

即函數返回1,如果變種是奇數,否則爲0。 「&」是AND二元運算符,因此它將考慮數字的最後二進制數字。

例如:

5以二進制爲101 - > 101 & 1 = 1 - >奇數。

8位二進制是1000 - > 1000 & 1 = 0 - >偶數。