Całość jest trochę pokręcona.
W JS liczby (typ Number) są przechowywane wewnętrznie jako typ FLOAT, który udostępnia 53-bitową (czy coś koło tego) precyzję dla liczb całkowitych. Jednakże wszystkie operacje bitowe (włącznie z przesunięciami) są już realizowane na 32-biotwej reprezentacji argumentów operatora:
przykładW PHP natomiast liczby (całkowite) są przechowywane jako 32-bitowy lub 64-bitowy INTEGER, a operacje na bitach są w ich przypadku przeprowadzone na pełnej reprezentacji tych liczb (czyli ponownie 32 lub 64 bity są brane pod uwagę). Niestety wszystkie serwisy z serii "wrzuć i odpal kod online" jakie znam działają na 32-bitowych maszynach więc bez przykładu.

Dlatego też chcąc przenieść ten kod z JS do PHP musiałbyś:
1. Zadbać o to by początkowe argumenty przekazane do funkcji miały dokładnie taką samą reprezentację bitową.
2. W PHP rozróżniać systemy 32-u i 64-o bitowe, co wiąże się z użyciem różnych wartości przesunięć.
3. W PHP na maszynach 64-bitowych wyniki wszystkich operacji bitowych ucinać do ostatnich 32-bitów.
Cytat
niestety to nie jest serwer na Windowsie....
http://pl.php.net/manual/en/gmp.installation.phpA jeżeli nie chce Ci się / nie masz możliwości ponownie komplować może chociaż uda Ci się wrzucić gotowy plik php_gmp.so?