PHP 在按位运算中的 Infinit 值返回奇怪的值
今天,我刚刚在测试php中按位计算发生的事情时发现了一个有趣的发现,例如( => Exclusive OR (XOR)的按位运算符)在64位系统中给了我=>最大的负值。INF ^ 0
^
int(-9223372036854775808)
但后来我问自己:“为什么在XOR中结果为负,而”正无穷大“的意思是(63位,前导)和0(64位在=>)PHP的无穷大值是什么,它背后的计算是什么?为什么当我使用“负无穷大”(A领先于0 = >上的领先者)时,我会得到一个(正确的?)负值?9223372036854775807
1
0
0
0 xor 0 = 0
1
0
1 xor 0 = 1
另一个有趣的观点是,这只是在PHP版本5.5.9-1上发生,而不是在5.3.x.和5.6.x(我已经测试过的地方)!也许有人知道那里发生了什么?在三个版本上进行了测试,但只有我的(5.5.9-1)给出了这些结果:
只是为了让你们知道,这只是我为了好玩而做的一个抽象的游戏,但我发现它很有趣。也许有人可以在这里帮忙,或者向我解释一个错误的想法?如果有人需要有关任何事情的更多信息,请告诉我!
编辑:因此,对于jbafford来说,得到一个完整的答案会很棒,所以我只引用他的话:why does 5.5 and 5.6 result in PHP_INT_MIN, and everything else return 0?