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

试图找出逻辑。但它最终是徒劳的!!有人可以解释一下吗

4

4 回答 4

4

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

那么让我们看一下数字和操作:

第一的,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向左移动(每个步骤的意思是“乘以二”)

所以3<<2in effect 意味着3*(2^2),while2<<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
      2 = 0b10
  0b100 = 4
 0b1000 = 8
0b10000 = 16

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

第一个运算符 (<<) 是按位移位运算符,特别是左移运算符。它采用左侧参数并将二进制表示向左移动右侧参数指定的位数。右移 (>>) 执行相同的操作,但向右移动。在此处阅读有关它的更多信息http://php.net/language.operators.bitwise

于 2013-11-08T09:21:31.283 回答