【发布时间】:2011-01-19 08:09:55
【问题描述】:
我对 PHP 的左移函数的行为感到非常困惑。我在两台不同的机器(开发和托管)上使用它,它们给了我不同的答案。我已经追踪到这个计算:
(-3941404251) << 5;
在一台机器上我得到答案 -1570884448;另一方面,我得到 0。在两个系统上,PHP_INT_MAX = 2147483647。后者是 32 位系统,第一个是 64 位系统,尽管 php 作为 32 位进程运行并且仍然给出相同的答案。
我只能假设这是 32 位与 64 位的问题,但有没有简单的方法来获得所需的行为。如果有人能指出我的功能或其他东西,那就太好了。
谢谢!
【问题讨论】:
-
好吧,将 echo 放在该语句前面会产生同样的效果。 (上下文不是问题)。
-
@Sarfraz :他已经显示了他的代码:
(-3941404251) << 5;;; @Brendon:我重现了你所描述的内容:32 位为 0,64 位为 -1570884448
标签: php 64-bit 32-bit bit-manipulation bit-shift