побитовые операторы работают только с целыми числами в PHP, а максимальный размер целого числа составляет 2 ^ 63 на 64-битных серверах.Если я создаю значение, большее, чем это, он преобразует мою переменную в число с плавающей точкой, и побитовые операторы перестают функционировать.У меня есть следующий пример:
<?php
$CAN_DANCE = 2;
$CAN_SING = 4;
$CAN_PLAY = 8;
$CAN_BEGOD = pow(2,64);
$userperms = $CAN_PLAY | $CAN_DANCE | $CAN_SING | $CAN_BEGOD;
if($userperms & $CAN_DANCE)
echo 'This will work';
if($userperms & $CAN_BEGOD)
echo 'This will not work';
?>
Естественно, он вернет true для первой проверки, что меньше 2 ^ 63, однако для последней я назначаю его 2 ^ 64, что слишком велико для целогоневерно возвращает false.Есть ли способ заставить его работать больше 2 ^ 63?В противном случае я смогу использовать битовые перья только для 63 различных предметов.