按位左移运算符

Bitwise Left Shift operator

$a = 23;
$res = $a << 4 
print($res);

对于上面粘贴的代码片段,输出为 368。它是如何计算的?

我预计 92。

a 是 23

a 以 2 为基数是 10111

所以8位中的a是00010111

左移4为01110000

是 - 92

有人能给我解释一下吗?

在此处查看 bitwise 操作手册

23转成二进制为10111,按位运算符左移时为101110000,转为十进制为368.

这就是它返回 368 的原因,因为 $a << $b$a $b 步骤的位移到了 左边

23

256 128 64 32 16 8 4 2 1
 X   X   X  X  1 0 1 1 1

$a << 4

之后

368

256 128 64 32 16 8 4 2 1
 1   0   1  1  1 0 0 0 0