为什么'<<'运算符在 Javascript 和 PHP 中有时表现不同?
获取以下代码片段:
<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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
(x << 9) % 0x100000000
或其 PHP 等效项。 (或者你刚才说的)use
(x << 9) % 0x100000000
or its PHP equivalent. (or what you just said)PHP 为您提供 64 位结果。 Javascript 只给你低 32 位。如果您使用
(x << 9) & PHP 中的 0xFFFFFFFF
你会得到低 32 位。不过,您可能会遇到符号位问题。尝试
(23456789 << 9)
PHP is giving you a 64 bit result. Javascript is just giving you the lower 32bits. If you use
(x << 9) & 0xFFFFFFFF
in PHP you'll get the low 32 bits.you may run into problems with the sign bit though. Try
(23456789 << 9)