<?php
echo 2<<3; //Output 16
echo '---';
echo 3<<2; //Output 12
?>
试图找出逻辑。但它最终是徒劳的!!有人可以解释一下吗
<<
运算符是按位运算符。这基本上意味着数字被视为二进制数,交互是关于移动位的。
因此,让我们看一下数字和操作:
首先,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<<2
实际上意味着3*(2^2)
,而2<<3
意味着2*(2^3)
。
<<
运算符按位左移。
让我们用二进制表示形式写下数字
0000 0010 // 2
0000 0011 // 3
然后分别将它们移位 3 和 2:
0001 0000 // 16
0000 1100 // 12
2 = 0b10
0b100 = 4
0b1000 = 8
0b10000 = 16
3 = 0b11
0b110 = 6
0b1100 = 12
拳运算符 (<<) 是按位移位运算符,特别是左移运算符。它采用左边的参数,并根据右边参数指定的位数将二进制表示形式向左移动。右移 (>>) 执行相同的操作,但向右移动。在此处阅读更多相关信息 http://php.net/language.operators.bitwise