为什么'<<<运算符有时在Javascript和PHP中表现不同?

时间:2011-03-24 04:56:02

标签: php javascript bit-shift

请使用以下代码段:

<script>
var x = 25;
document.write(x << 9);
</script>

<?php
$x = 25;
echo ($x << 9);
?>

输出:12800 12800
好。正常到目前为止......现在让我们试试这个:

<script>
var x = 12345678;
document.write(x << 9);
</script>

<?php
$x = 12345678;
echo ($x << 9);
?>

这次输出为2026019840 6320987136

为什么后两个值不同?而且,最重要的是(对我而言),如何让PHP实现执行Javascript实现的功能?换句话说,我希望我的PHP代码输出2026019840而不是6320987136

2 个答案:

答案 0 :(得分:3)

使用(x << 9) % 0x100000000或其等效的PHP。 (或者你刚才说的)

答案 1 :(得分:1)

PHP给你一个64位的结果。 Javascript只是给你较低的32位。如果你在PHP中使用(x << 9) & 0xFFFFFFFF,你将获得低32位。

你可能会遇到符号位问题。试试(23456789 << 9)