2011-12-21 7 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

+0

[参考 - このシンボルはPHPで何を意味していますか?](http://stackoverflow.com/questions/3737139/reference-何の意味ですか?この記号の意味はPHPです) – Herbert

答えて

6

&はビット単位であり、それは$varビットのマスクとして機能します。すべての奇数番号は常に奇数で1ときandedを返すとあなたはビット単位の機能を使用している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

3

で終わります。

いくつかの例:

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

varがそうでない奇数、0である場合に1を返す機能。 "&"はANDバイナリ演算子なので、数値の最後の2進数を考慮します。例えば

: - > 101 & 1 = 1 - >奇数

5バイナリでは101です。

8は、1000 - > 1000 & 1 = 0 - >偶数です。

関連する問題