Я очень запутался в поведении PHP-функции сдвига влево. Я использую его на двух разных машинах (разработчик и хостинг), и они дают мне разные ответы. Я отследил это до этого расчета:
(-3941404251) << 5;
На одной машине получаю ответ -1570884448; с другой — 0. В обеих системах PHP_INT_MAX = 2147483647. Последняя — 32-битная система, а первая — 64-битная, хотя php работает как 32-битный процесс и по-прежнему дает тот же ответ.
Я могу только предположить, что это проблема с 32-битной и 64-битной версиями, но есть ли простой способ получить желаемое поведение. Если бы кто-нибудь мог указать мне на функцию или что-то в этом роде, это было бы здорово.
Спасибо!
(-3941404251) << 5
;;; @ Брендон: я воспроизвожу то, что вы описываете: 0 для 32 бит и -1570884448 для 64 бит. - person Pascal MARTIN   schedule 21.02.2010