繁体   English   中英

为什么PHP和Javascript之间的左移有所不同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM