对于一个非常简单的问题,我找不到解决方案。

JavaScript中的代码:

var x = -1 ^ 0xF00F9344;


在这种情况下x值为267414715

PHP中的代码:

$x = -1 ^ 0xF00F9344;


其结果是-4027552581

任何想法,如何在PHP中获得267414715(正确)结果?

最佳答案

虽然javascript位操作始终是32位,但是php取决于平台的字长:

在32位平台上

$n    = "11110000000011111001001101000100"
-1^$n = "00001111111100000110110010111011"  = 267414715


在64位平台上

$n    = "0000000000000000000000000000000011110000000011111001001101000100"
-1^$n = "1111111111111111111111111111111100001111111100000110110010111011" = -4027552581

09-25 15:09