2011-09-19 37 views
0

我無法找到非常簡單問題的解決方案。在PHP和JavaScript中使用2個值的十六進制XOR

代碼在JavaScript:

var x = -1^0xF00F9344; 

在這種情況下,x值是267414715

代碼在PHP中:

$x = -1^0xF00F9344; 

結果是-4027552581

任何想法,怎麼樣在PHP中獲得267414715(正確)結果?

+0

[適用於我](http://www.ideone.com/DILsQ)。 – Jon

+0

是的,也在這裏工作。你有什麼版本的PHP?並在什麼硬件? –

+0

對我也適用 – Melsi

回答

4

雖然JavaScript的位操作總是32位,PHP依賴於平臺的字大小:

32位平臺

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

在64位平臺上

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