Когда я пытаюсь сделать этот код в PHP:
$result = 4 << 29;
var_dump($result); // int(2147483648)
Но на других языках, например, в JAVA или javascript, это будет -2147483648
,
Зачем?
Это зависит от версии PHP, которую вы используете. Некоторое время назад был ошибка в 32-битном int математике когда дело доходит до переполнения. Это было решено в PHP 5.3.
Других решений пока нет …