Javascript does not Integer, but bitwise operators only make sense on Integer.
So, before bitwise operators, javascript will apply ToInt32(val)to your number.
For "Signed 32 bits Integer," the upper bit represents "signed."
Finally, your number overflows with the "signed bit".
, ECMAScript.