Nella funzione tu tratti escusivamente numeri positivi e giustamente ti restituisce un numero positivo, considera che i numeri in notazione binaria che hanno il bit piu' alto ad on sono, per convenzione, considerati negativi, forzando un and binario in javascript obblighi l'interprete a restituire lo stesso valore che rende php che, presumo, per quella funzione lavora in binario.

Scusa la spiegazione maccheronica

ciao