<?php
echo 2<<3; //Output 16
echo '---';
echo 3<<2; //Output 12
?>
ロジックを見つけようとしました。しかし、それは無駄に終わります!! 誰か説明してくれませんか
<?php
echo 2<<3; //Output 16
echo '---';
echo 3<<2; //Output 12
?>
ロジックを見つけようとしました。しかし、それは無駄に終わります!! 誰か説明してくれませんか
<<
演算子はビット演算子です。これは基本的に、数値が 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)
ます。
<<
演算子はビットごとの左シフトです。
数値をバイナリ表現で書きましょう
0000 0010 // 2
0000 0011 // 3
そして、それらをそれぞれ 3 と 2 シフトします。
0001 0000 // 16
0000 1100 // 12
最初の演算子 (<<) は、ビットごとのシフト演算子、具体的には左シフト演算子です。左側の引数を取り、右側の引数で指定されたビット数だけバイナリ表現を左にシフトします。右シフト (>>) は同じことを行いますが、右にシフトします。詳細については、http://php.net/language.operators.bitwiseをご覧ください。
2 = 0b10
0b100 = 4
0b1000 = 8
0b10000 = 16
3 = 0b11
0b110 = 6
0b1100 = 12