请使用以下代码段:
<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
答案 0 :(得分:3)
使用(x << 9) % 0x100000000
或其等效的PHP。 (或者你刚才说的)
答案 1 :(得分:1)
PHP给你一个64位的结果。 Javascript只是给你较低的32位。如果你在PHP中使用(x << 9) & 0xFFFFFFFF
,你将获得低32位。
你可能会遇到符号位问题。试试(23456789 << 9)