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

发布于 2024-10-26 18:50:17 字数 544 浏览 5 评论 0 原文

获取以下代码片段:

<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

Take the following code snippet:

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

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

This outputs: 12800 12800
OK. Normal so far... Now lets try this:

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

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

This time the output is 2026019840 6320987136

Why are the latter two values different? And, most importantly (to me), how do I get the PHP implementation to do what the Javascript implementation does? In other words, I want my PHP code to output 2026019840 instead of 6320987136

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

舟遥客 2024-11-02 18:50:17

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

use (x << 9) % 0x100000000 or its PHP equivalent. (or what you just said)

ぽ尐不点ル 2024-11-02 18:50:17

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)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文