php按位XOR和js按位XOR产生不同的结果

时间:2016-08-30 17:57:11

标签: javascript php bit-manipulation

当我尝试在php和js中执行按位XOR运算时,它们会在某些情况下产生不同的结果,例如

2166136261 ^ 101 = -2128831072 on browsers (js)
2166136261 ^ 101  = 2166136224(php)

我的理解是因为php运行64位而不是32位js。

任何人都可以告诉我确切的原因,以及是否可以解决这两个操作导致相同的值。谢谢!

1 个答案:

答案 0 :(得分:-1)

2,147,483,647是32位计算中整数的最大可能正值,(它是2 ^ 16,我们有32位的一半,另一半是负数。)

一旦你使用比32位系统更大的数字,你就会开始得到棘手的结果,因为计算机认为这是一个负数。见https://en.wikipedia.org/wiki/Integer_(computer_science)