在PHP 2中<< 3返回16和3<< 2返回12请有人解释一下

时间:2013-11-08 09:18:07

标签: php

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

试图找出逻辑。但它的结局是徒劳的!请有人解释一下

4 个答案:

答案 0 :(得分:4)

<<运算符是bitwise operator。这基本上意味着数字被视为二进制数,并且交互是关于移动位。

让我们来看看数字和操作:

首先,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)

答案 1 :(得分:1)

<<运算符按位左移。

让我们用二进制表示法编写数字

0000 0010 // 2
0000 0011 // 3

然后将它们分别移动3和2:

0001 0000 // 16
0000 1100 // 12

答案 2 :(得分:0)

      2 = 0b10
  0b100 = 4
 0b1000 = 8
0b10000 = 16

     3 = 0b11
 0b110 = 6
0b1100 = 12

答案 3 :(得分:0)

第一个算子(&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&quot;&gt;)它接受左手参数并将二进制表示向左移动右参数指定的位数。右移(&gt;&gt;)执行相同但向右移动。请在此处详细了解http://php.net/language.operators.bitwise