JavaScript converts operands to 32-bit signed ints before doing bitwise operations. It also does the operation with 32-bit signed ints, meaning that the result is a 32-bit s
It's ugly, but:
var a = 1986735448; var b = (a << 1) >>> 0; /* b = 3973470896 */