0

次のコードがどのように機能するのか理解できません。

$start = 1;
while($start<10){
    if ($start&1) {
      echo "ODD  ".$start." <br/> ";
    }
    else {
      echo "EVEN  ".$start." <br/> ";
    }
    $start++;
}

$start&1ODDとEVENを別々に返します。

出力

ODD 1
EVEN 2
ODD 3
EVEN 4
ODD 5
EVEN 6
ODD 7
EVEN 8
ODD 9 

$start&2の代わりに与える$start&1と、別の順序で戻ります。

ここではどのよう&1 &2に機能しますか?

4

5 に答える 5

2

これはビット単位の演算子です。

  0001 --> 1
& 0001
  ----
  0001 --> 1

  0010 --> 2
& 0001
  ----
  0000 --> 0

  0011 --> 3
& 0001
  ----
  0001 --> 1

エンディアンに応じて、このチェックで重要になるのは左端または右端のビットになります。上記は&ing with 1です。2番目の例では、&ing with 2は、次のようになります。

  0001 --> 1
& 0010
  ----
  0000 --> 0

  0010 --> 2
& 0010
  ----
  0010 --> 2

  0011 --> 3
& 0010
  ----
  0010 --> 2

そして、さらに比較するために、ここに1〜3&ing with 3

  0001 --> 1
& 0011
  ----
  0001 --> 1

  0010 --> 2
& 0011
  ----
  0010 --> 2

  0011 --> 3
& 0011
  ----
  0011 --> 3

何が起こっているかを確認するには、2つの数字の列を下にたどってください。両方が1の場合、結果のその位置のビットは1に設定されます。どちらかが0の場合、結果はその位置の0になります。したがって、2と3の場合。

  0010 --> 2
& 0011
  ----
  0010
  ||||
  |||+- 0 and 1, so 0
  ||+-- 1 and 1, so 1
  ++--- 0 and 0, so 0

  0010 == 2
于 2012-12-15T04:52:54.207 に答える
2

&このコードは演算子(AND ビット演算子)に基づいています:
$start&1右端のビットが1の場合はtrueを返します=>数値が奇数です

たとえば、5(odd)のバイナリ表現は次のとおりです。

101

および1

001

したがって、これもPHPにあり101 & 001ます。001true

于 2012-12-15T04:53:46.730 に答える
1

ビット演算子はビット&を扱います。コンピュータでは、数値はバイナリデータ(1と0、「ビット」とも呼ばれます)として保存されます。これは、ループで使用される番号の表です。

1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001

10進数とは異なり、2進数は右から左に読み取られます。表を見ると、偶数と奇数の2進数がそれぞれ01で終わっていることがわかります。で終わる2進数0は偶数で、で終わる2進数1は奇数です。

ビット演算子が行うことは、&基本的に、小数の2進表現から最後の桁を切り取り、それを返すことです。

数字の5(0101)を取ると、擬似コードで設定できます。

if last bit in 0101 is 1 then
    number is odd
otherwise
    number is even

PHPコードの場合、式はまたはのいずれかを($start & 1)返します。PHPでは、型ジャグリングは、、およびに変わります。101true0false

于 2012-12-15T05:31:29.193 に答える
0

それは9回ループし、ビット単位で1でands(つまり、2の2進数であるかどうかを確認するために2番目の2進数でands)し、それに応じて出力します。

于 2012-12-15T04:54:02.857 に答える
0

&はビット単位の演算子です。この表現では、2つの値が共通する出生を探しています。

PHPのビット演算子の使用法のチュートリアルは次のとおりです。http ://www.w3resource.com/php/operators/bitwise-operators.php

于 2012-12-15T04:59:13.133 に答える