Dromok
@Dromok

PHP побитовые операторы на 64 и 32 битах

Здравствуйте!
Есть задача вычисления побитовых операторов в PHP в точности как в Javascript. Как известно в Javascript вычисление происходит на 32 битах. Используя PHP на 32-битной архитектуре проблем не было, но при переезде на новый сервер выяснилось что результаты таких вычислений отличаются, так как там уже 64-битная архитектура. Вопрос, каким образом можно вычислять побитовые операторы на 64 битной архитектуре точно также как на 32 битной? Может как-то обрезать результат?
  • Вопрос задан
  • 2741 просмотр
Решения вопроса 1
Dromok
@Dromok Автор вопроса
Помогла вот такая функция:
function intval32bits($value)
{
    $value = ($value & 0xFFFFFFFF);

    if ($value & 0x80000000)
        $value = -((~$value & 0xFFFFFFFF) + 1);

    return $value;
}

Соответственно атрибутом в эту функцию передаем любую побитовую операцию на 64 битной системе. Еще если требуется вывод в decbin на 64 битах, то достаточно обрезать первые 32 символа и получаем тоже самое, что и decbin на 32-х битах.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
alekciy
@alekciy
Вёбных дел мастер
Что мне говорит, что дело не в операторах, а используемых данных. Поэтому просто следует использовать 32-рядные данные. Можно через pack / unpack.
Ответ написан
Комментировать
@shagguboy
в php нет 64 битных чисел. даже на 64х системах
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы