2
<?php
echo 2<<3; //Output 16 
echo '---';
echo 3<<2; //Output 12 
?>

ロジックを見つけようとしました。しかし、それは無駄に終わります!! 誰か説明してくれませんか

4

4 に答える 4

4

<<演算子はビット演算子です。これは基本的に、数値が 2 進数として扱われ、相互作用はビットの移動に関するものであることを意味します。

それでは、数値と操作を見てみましょう。

初め、2 << 3

0b000010 // 2 in binary
0b010000 // move the bits three left, we get 16

それで3 << 2

0b000011 // 3 in binary
0b001100 // move the bits two left, we get 12

上記のリンクのマニュアルページから:

ステップのビットを左にシフトします$a $b(各ステップは「2 倍する」ことを意味します)。

したがって3<<2、実質的には を意味し3*(2^2)、一方では を2<<3意味し2*(2^3)ます。

于 2013-11-08T09:22:26.473 に答える
1

<<演算子はビットごとの左シフトです。

数値をバイナリ表現で書きましょう

0000 0010 // 2
0000 0011 // 3

そして、それらをそれぞれ 3 と 2 シフトします。

0001 0000 // 16
0000 1100 // 12
于 2013-11-08T09:21:10.887 に答える
0

最初の演算子 (<<) は、ビットごとのシフト演算子、具体的には左シフト演算子です。左側の引数を取り、右側の引数で指定されたビット数だけバイナリ表現を左にシフトします。右シフト (>>) は同じことを行いますが、右にシフトします。詳細については、http://php.net/language.operators.bitwiseをご覧ください。

于 2013-11-08T09:21:31.283 に答える
0
      2 = 0b10
  0b100 = 4
 0b1000 = 8
0b10000 = 16

     3 = 0b11
 0b110 = 6
0b1100 = 12
于 2013-11-08T09:20:22.187 に答える