[英]Why left shift is different between PHP and Javascript
用JavaScript
p = 105874240;
105874240
p << 5;
-906991616
但是在PHP中
php > echo $p = 105874240;
105874240
php > echo $p << 5;
3387975680
我搜索一些介绍的不同之处,因为Javascript使用带符号的int32。 但是我找不到适合自己的解决方案,所有方法都不适合我。
您能告诉我发生了什么,如何在PHP中获得相同的Javascript结果。 谢谢。
这就是我要做的。
function to32bits($value)
{
$value = ($value & 0xffffffff);
if ($value & 0x80000000) $value = -((~$value & 0xffffffff) + 1);
return $value;
}
$p = 105874240;
echo to32bits($p << 5); // -906991616
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.