$a = 23;
$res = $a << 4
print($res);
对于上面粘贴的代码片段,输出为368。它是如何计算的?
我本以为92岁。
a是23
基地2中的a是10111
所以8位中的a是00010111
左移4为01110000
是-92
有人能解释我吗?
这就是它返回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
点击此处查看按位操作手册
将23
转换为二进制,它是10111
,当您执行左移位逐位运算符时,它的值将是101110000
,当您将其转换为十进制时,它将变为368
。