Сегодня я просто сделал интересное открытие, проверяя, что происходит, вычисляя битво в php, как INF ^ 0
(^
= > Побитовый оператор для исключительного ИЛИ (XOR)), что дало мне int(-9223372036854775808)
= > наибольшее возможное отрицательное значение в 64-битная система.
Но потом я спрашивал себя: "Почему результат будет отрицательным в XOR, когда" положительный бесконечность "означает 9223372036854775807
(63 бита на 1
с ведущим 0
) и 0 (64 бита на 0
= > 0 xor 0 = 0
) Что такое бесконечное значение PHP, хотя и что за ним вычисляется? И почему я получаю (правильное?) отрицательное значение, когда я использую" отрицательный бесконечный "(A 1
против ведущего 0
на 0 = > 1 xor 0 = 1
?".
Еще один интересный момент в том, что это происходит только на PHP версии 5.5.9-1, а не напр. на 5.3.x. и 5.6.x(где я его протестировал)! Может, у кого-то есть идея, что там происходит? Протестировано в трех версиях, но только мои (5.5.9-1) дают такие результаты:
Просто, чтобы вы, ребята, знали, это просто абстрактный игровой процесс, который я сделал для удовольствия, но мне это интересно. Может быть, кто-то может помочь здесь или объяснить мне неправильную мысль? Просто скажите, нужно ли кому-то больше информации о чем угодно!
EDIT: В соответствии с jbafford было бы здорово получить полный ответ, поэтому я просто процитирую его: why does 5.5 and 5.6 result in PHP_INT_MIN, and everything else return 0?