function test1 (x) { assertEq(x | -1, -1); assertEq(-1 | x, -1); assertEq(x & -1, 1); assertEq(-1 & x, 1); assertEq(x ^ -1, -2); assertEq(-1 ^ x, -2); assertEq(x >> -1, 0); assertEq(-1 >> x, -1); assertEq(x >>> -1, 0); assertEq(-1 >>> x, 2147483647); assertEq(x << -1, -2147483648); assertEq(-1 << x, -2); assertEq(x | 1, 1); assertEq(1 | x, 1); assertEq(x & 1, 1); assertEq(1 & x, 1); assertEq(x ^ 1, 0); assertEq(1 ^ x, 0); assertEq(x >> 1, 0); assertEq(1 >> x, 0); assertEq(x >>> 1, 0); assertEq(1 >>> x, 0); assertEq(x << 1, 2); assertEq(1 << x, 2); assertEq(x | 0, 1); assertEq(0 | x, 1); assertEq(x & 0, 0); assertEq(0 & x, 0); assertEq(x ^ 0, 1); assertEq(0 ^ x, 1); assertEq(x >> 0, 1); assertEq(0 >> x, 0); assertEq(x >>> 0, 1); assertEq(0 >>> x, 0); assertEq(x << 0, 1); assertEq(0 << x, 0); assertEq(x | 0xffffffff, -1); assertEq(0xffffffff | x, -1); assertEq(x & 0xffffffff, 1); assertEq(0xffffffff & x, 1); assertEq(x ^ 0xffffffff, -2); assertEq(0xffffffff ^ x, -2); assertEq(x >> 0xffffffff, 0); assertEq(0xffffffff >> x, -1); assertEq(x >>> 0xffffffff, 0); assertEq(0xffffffff >>> x, 2147483647); assertEq(x << 0xffffffff, -2147483648); assertEq(0xffffffff << x, -2); assertEq(x | "10.6", 11); assertEq("10.6" | x, 11); assertEq(x & "10.6", 0); assertEq("10.6" & x, 0); assertEq(x ^ "10.6", 11); assertEq("10.6" ^ x, 11); assertEq(x >> "10.6", 0); assertEq("10.6" >> x, 5); assertEq(x >>> "10.6", 0); assertEq("10.6" >>> x, 5); assertEq(x << "10.6", 1024); assertEq("10.6" << x, 20); assertEq(x | 2147483648, -2147483647); assertEq(2147483648 | x, -2147483647); assertEq(x & 2147483648, 0); assertEq(2147483648 & x, 0); assertEq(x ^ 2147483648, -2147483647); assertEq(2147483648 ^ x, -2147483647); assertEq(x >> 2147483648, 1); assertEq(2147483648 >> x, -1073741824); assertEq(x >>> 2147483648, 1); assertEq(2147483648 >>> x, 1073741824); assertEq(x << 2147483648, 1); assertEq(2147483648 << x, 0); assertEq(x | 4294967296, 1); assertEq(4294967296 | x, 1); assertEq(x & 4294967296, 0); assertEq(4294967296 & x, 0); assertEq(x ^ 4294967296, 1); assertEq(4294967296 ^ x, 1); assertEq(x >> 4294967296, 1); assertEq(4294967296 >> x, 0); assertEq(x >>> 4294967296, 1); assertEq(4294967296 >>> x, 0); assertEq(x << 4294967296, 1); assertEq(4294967296 << x, 0); assertEq(x | undefined, 1); assertEq(undefined | x, 1); assertEq(x & undefined, 0); assertEq(undefined & x, 0); assertEq(x ^ undefined, 1); assertEq(undefined ^ x, 1); assertEq(x >> undefined, 1); assertEq(undefined >> x, 0); assertEq(x >>> undefined, 1); assertEq(undefined >>> x, 0); assertEq(x << undefined, 1); assertEq(undefined << x, 0); assertEq(x | null, 1); assertEq(null | x, 1); assertEq(x & null, 0); assertEq(null & x, 0); assertEq(x ^ null, 1); assertEq(null ^ x, 1); assertEq(x >> null, 1); assertEq(null >> x, 0); assertEq(x >>> null, 1); assertEq(null >>> x, 0); assertEq(x << null, 1); assertEq(null << x, 0); assertEq(x | false, 1); assertEq(false | x, 1); assertEq(x & false, 0); assertEq(false & x, 0); assertEq(x ^ false, 1); assertEq(false ^ x, 1); assertEq(x >> false, 1); assertEq(false >> x, 0); assertEq(x >>> false, 1); assertEq(false >>> x, 0); assertEq(x << false, 1); assertEq(false << x, 0); assertEq(x | true, 1); assertEq(true | x, 1); assertEq(x & true, 1); assertEq(true & x, 1); assertEq(x ^ true, 0); assertEq(true ^ x, 0); assertEq(x >> true, 0); assertEq(true >> x, 0); assertEq(x >>> true, 0); assertEq(true >>> x, 0); assertEq(x << true, 2); assertEq(true << x, 2); assertEq(x | -1.5, -1); assertEq(-1.5 | x, -1); assertEq(x & -1.5, 1); assertEq(-1.5 & x, 1); assertEq(x ^ -1.5, -2); assertEq(-1.5 ^ x, -2); assertEq(x >> -1.5, 0); assertEq(-1.5 >> x, -1); assertEq(x >>> -1.5, 0); assertEq(-1.5 >>> x, 2147483647); assertEq(x << -1.5, -2147483648); assertEq(-1.5 << x, -2); } test1(1) function test2 (x) { assertEq(x | -1, -1); assertEq(-1 | x, -1); assertEq(x & -1, 0); assertEq(-1 & x, 0); assertEq(x ^ -1, -1); assertEq(-1 ^ x, -1); assertEq(x >> -1, 0); assertEq(-1 >> x, -1); assertEq(x >>> -1, 0); assertEq(-1 >>> x, 4294967295); assertEq(x << -1, 0); assertEq(-1 << x, -1); assertEq(x | 1, 1); assertEq(1 | x, 1); assertEq(x & 1, 0); assertEq(1 & x, 0); assertEq(x ^ 1, 1); assertEq(1 ^ x, 1); assertEq(x >> 1, 0); assertEq(1 >> x, 1); assertEq(x >>> 1, 0); assertEq(1 >>> x, 1); assertEq(x << 1, 0); assertEq(1 << x, 1); assertEq(x | 0, 0); assertEq(0 | x, 0); assertEq(x & 0, 0); assertEq(0 & x, 0); assertEq(x ^ 0, 0); assertEq(0 ^ x, 0); assertEq(x >> 0, 0); assertEq(0 >> x, 0); assertEq(x >>> 0, 0); assertEq(0 >>> x, 0); assertEq(x << 0, 0); assertEq(0 << x, 0); assertEq(x | 0xffffffff, -1); assertEq(0xffffffff | x, -1); assertEq(x & 0xffffffff, 0); assertEq(0xffffffff & x, 0); assertEq(x ^ 0xffffffff, -1); assertEq(0xffffffff ^ x, -1); assertEq(x >> 0xffffffff, 0); assertEq(0xffffffff >> x, -1); assertEq(x >>> 0xffffffff, 0); assertEq(0xffffffff >>> x, 4294967295); assertEq(x << 0xffffffff, 0); assertEq(0xffffffff << x, -1); assertEq(x | "10.6", 10); assertEq("10.6" | x, 10); assertEq(x & "10.6", 0); assertEq("10.6" & x, 0); assertEq(x ^ "10.6", 10); assertEq("10.6" ^ x, 10); assertEq(x >> "10.6", 0); assertEq("10.6" >> x, 10); assertEq(x >>> "10.6", 0); assertEq("10.6" >>> x, 10); assertEq(x << "10.6", 0); assertEq("10.6" << x, 10); assertEq(x | 2147483648, -2147483648); assertEq(2147483648 | x, -2147483648); assertEq(x & 2147483648, 0); assertEq(2147483648 & x, 0); assertEq(x ^ 2147483648, -2147483648); assertEq(2147483648 ^ x, -2147483648); assertEq(x >> 2147483648, 0); assertEq(2147483648 >> x, -2147483648); assertEq(x >>> 2147483648, 0); assertEq(2147483648 >>> x, 2147483648); assertEq(x << 2147483648, 0); assertEq(2147483648 << x, -2147483648); assertEq(x | 4294967296, 0); assertEq(4294967296 | x, 0); assertEq(x & 4294967296, 0); assertEq(4294967296 & x, 0); assertEq(x ^ 4294967296, 0); assertEq(4294967296 ^ x, 0); assertEq(x >> 4294967296, 0); assertEq(4294967296 >> x, 0); assertEq(x >>> 4294967296, 0); assertEq(4294967296 >>> x, 0); assertEq(x << 4294967296, 0); assertEq(4294967296 << x, 0); assertEq(x | undefined, 0); assertEq(undefined | x, 0); assertEq(x & undefined, 0); assertEq(undefined & x, 0); assertEq(x ^ undefined, 0); assertEq(undefined ^ x, 0); assertEq(x >> undefined, 0); assertEq(undefined >> x, 0); assertEq(x >>> undefined, 0); assertEq(undefined >>> x, 0); assertEq(x << undefined, 0); assertEq(undefined << x, 0); assertEq(x | null, 0); assertEq(null | x, 0); assertEq(x & null, 0); assertEq(null & x, 0); assertEq(x ^ null, 0); assertEq(null ^ x, 0); assertEq(x >> null, 0); assertEq(null >> x, 0); assertEq(x >>> null, 0); assertEq(null >>> x, 0); assertEq(x << null, 0); assertEq(null << x, 0); assertEq(x | false, 0); assertEq(false | x, 0); assertEq(x & false, 0); assertEq(false & x, 0); assertEq(x ^ false, 0); assertEq(false ^ x, 0); assertEq(x >> false, 0); assertEq(false >> x, 0); assertEq(x >>> false, 0); assertEq(false >>> x, 0); assertEq(x << false, 0); assertEq(false << x, 0); assertEq(x | true, 1); assertEq(true | x, 1); assertEq(x & true, 0); assertEq(true & x, 0); assertEq(x ^ true, 1); assertEq(true ^ x, 1); assertEq(x >> true, 0); assertEq(true >> x, 1); assertEq(x >>> true, 0); assertEq(true >>> x, 1); assertEq(x << true, 0); assertEq(true << x, 1); assertEq(x | -1.5, -1); assertEq(-1.5 | x, -1); assertEq(x & -1.5, 0); assertEq(-1.5 & x, 0); assertEq(x ^ -1.5, -1); assertEq(-1.5 ^ x, -1); assertEq(x >> -1.5, 0); assertEq(-1.5 >> x, -1); assertEq(x >>> -1.5, 0); assertEq(-1.5 >>> x, 4294967295); assertEq(x << -1.5, 0); assertEq(-1.5 << x, -1); } test2(0) function test3 (x) { assertEq(x | -1, -1); assertEq(-1 | x, -1); assertEq(x & -1, -1); assertEq(-1 & x, -1); assertEq(x ^ -1, 0); assertEq(-1 ^ x, 0); assertEq(x >> -1, -1); assertEq(-1 >> x, -1); assertEq(x >>> -1, 1); assertEq(-1 >>> x, 1); assertEq(x << -1, -2147483648); assertEq(-1 << x, -2147483648); assertEq(x | 1, -1); assertEq(1 | x, -1); assertEq(x & 1, 1); assertEq(1 & x, 1); assertEq(x ^ 1, -2); assertEq(1 ^ x, -2); assertEq(x >> 1, -1); assertEq(1 >> x, 0); assertEq(x >>> 1, 2147483647); assertEq(1 >>> x, 0); assertEq(x << 1, -2); assertEq(1 << x, -2147483648); assertEq(x | 0, -1); assertEq(0 | x, -1); assertEq(x & 0, 0); assertEq(0 & x, 0); assertEq(x ^ 0, -1); assertEq(0 ^ x, -1); assertEq(x >> 0, -1); assertEq(0 >> x, 0); assertEq(x >>> 0, 4294967295); assertEq(0 >>> x, 0); assertEq(x << 0, -1); assertEq(0 << x, 0); assertEq(x | 0xffffffff, -1); assertEq(0xffffffff | x, -1); assertEq(x & 0xffffffff, -1); assertEq(0xffffffff & x, -1); assertEq(x ^ 0xffffffff, 0); assertEq(0xffffffff ^ x, 0); assertEq(x >> 0xffffffff, -1); assertEq(0xffffffff >> x, -1); assertEq(x >>> 0xffffffff, 1); assertEq(0xffffffff >>> x, 1); assertEq(x << 0xffffffff, -2147483648); assertEq(0xffffffff << x, -2147483648); assertEq(x | "10.6", -1); assertEq("10.6" | x, -1); assertEq(x & "10.6", 10); assertEq("10.6" & x, 10); assertEq(x ^ "10.6", -11); assertEq("10.6" ^ x, -11); assertEq(x >> "10.6", -1); assertEq("10.6" >> x, 0); assertEq(x >>> "10.6", 4194303); assertEq("10.6" >>> x, 0); assertEq(x << "10.6", -1024); assertEq("10.6" << x, 0); assertEq(x | 2147483648, -1); assertEq(2147483648 | x, -1); assertEq(x & 2147483648, -2147483648); assertEq(2147483648 & x, -2147483648); assertEq(x ^ 2147483648, 2147483647); assertEq(2147483648 ^ x, 2147483647); assertEq(x >> 2147483648, -1); assertEq(2147483648 >> x, -1); assertEq(x >>> 2147483648, 4294967295); assertEq(2147483648 >>> x, 1); assertEq(x << 2147483648, -1); assertEq(2147483648 << x, 0); assertEq(x | 4294967296, -1); assertEq(4294967296 | x, -1); assertEq(x & 4294967296, 0); assertEq(4294967296 & x, 0); assertEq(x ^ 4294967296, -1); assertEq(4294967296 ^ x, -1); assertEq(x >> 4294967296, -1); assertEq(4294967296 >> x, 0); assertEq(x >>> 4294967296, 4294967295); assertEq(4294967296 >>> x, 0); assertEq(x << 4294967296, -1); assertEq(4294967296 << x, 0); assertEq(x | undefined, -1); assertEq(undefined | x, -1); assertEq(x & undefined, 0); assertEq(undefined & x, 0); assertEq(x ^ undefined, -1); assertEq(undefined ^ x, -1); assertEq(x >> undefined, -1); assertEq(undefined >> x, 0); assertEq(x >>> undefined, 4294967295); assertEq(undefined >>> x, 0); assertEq(x << undefined, -1); assertEq(undefined << x, 0); assertEq(x | null, -1); assertEq(null | x, -1); assertEq(x & null, 0); assertEq(null & x, 0); assertEq(x ^ null, -1); assertEq(null ^ x, -1); assertEq(x >> null, -1); assertEq(null >> x, 0); assertEq(x >>> null, 4294967295); assertEq(null >>> x, 0); assertEq(x << null, -1); assertEq(null << x, 0); assertEq(x | false, -1); assertEq(false | x, -1); assertEq(x & false, 0); assertEq(false & x, 0); assertEq(x ^ false, -1); assertEq(false ^ x, -1); assertEq(x >> false, -1); assertEq(false >> x, 0); assertEq(x >>> false, 4294967295); assertEq(false >>> x, 0); assertEq(x << false, -1); assertEq(false << x, 0); assertEq(x | true, -1); assertEq(true | x, -1); assertEq(x & true, 1); assertEq(true & x, 1); assertEq(x ^ true, -2); assertEq(true ^ x, -2); assertEq(x >> true, -1); assertEq(true >> x, 0); assertEq(x >>> true, 2147483647); assertEq(true >>> x, 0); assertEq(x << true, -2); assertEq(true << x, -2147483648); assertEq(x | -1.5, -1); assertEq(-1.5 | x, -1); assertEq(x & -1.5, -1); assertEq(-1.5 & x, -1); assertEq(x ^ -1.5, 0); assertEq(-1.5 ^ x, 0); assertEq(x >> -1.5, -1); assertEq(-1.5 >> x, -1); assertEq(x >>> -1.5, 1); assertEq(-1.5 >>> x, 1); assertEq(x << -1.5, -2147483648); assertEq(-1.5 << x, -2147483648); } test3(-1) function test4 (x) { assertEq(x | -1, -1); assertEq(-1 | x, -1); assertEq(x & -1, -2147483648); assertEq(-1 & x, -2147483648); assertEq(x ^ -1, 2147483647); assertEq(-1 ^ x, 2147483647); assertEq(x >> -1, -1); assertEq(-1 >> x, -1); assertEq(x >>> -1, 1); assertEq(-1 >>> x, 4294967295); assertEq(x << -1, 0); assertEq(-1 << x, -1); assertEq(x | 1, -2147483647); assertEq(1 | x, -2147483647); assertEq(x & 1, 0); assertEq(1 & x, 0); assertEq(x ^ 1, -2147483647); assertEq(1 ^ x, -2147483647); assertEq(x >> 1, -1073741824); assertEq(1 >> x, 1); assertEq(x >>> 1, 1073741824); assertEq(1 >>> x, 1); assertEq(x << 1, 0); assertEq(1 << x, 1); assertEq(x | 0, -2147483648); assertEq(0 | x, -2147483648); assertEq(x & 0, 0); assertEq(0 & x, 0); assertEq(x ^ 0, -2147483648); assertEq(0 ^ x, -2147483648); assertEq(x >> 0, -2147483648); assertEq(0 >> x, 0); assertEq(x >>> 0, 2147483648); assertEq(0 >>> x, 0); assertEq(x << 0, -2147483648); assertEq(0 << x, 0); assertEq(x | 0xffffffff, -1); assertEq(0xffffffff | x, -1); assertEq(x & 0xffffffff, -2147483648); assertEq(0xffffffff & x, -2147483648); assertEq(x ^ 0xffffffff, 2147483647); assertEq(0xffffffff ^ x, 2147483647); assertEq(x >> 0xffffffff, -1); assertEq(0xffffffff >> x, -1); assertEq(x >>> 0xffffffff, 1); assertEq(0xffffffff >>> x, 4294967295); assertEq(x << 0xffffffff, 0); assertEq(0xffffffff << x, -1); assertEq(x | "10.6", -2147483638); assertEq("10.6" | x, -2147483638); assertEq(x & "10.6", 0); assertEq("10.6" & x, 0); assertEq(x ^ "10.6", -2147483638); assertEq("10.6" ^ x, -2147483638); assertEq(x >> "10.6", -2097152); assertEq("10.6" >> x, 10); assertEq(x >>> "10.6", 2097152); assertEq("10.6" >>> x, 10); assertEq(x << "10.6", 0); assertEq("10.6" << x, 10); assertEq(x | 2147483648, -2147483648); assertEq(2147483648 | x, -2147483648); assertEq(x & 2147483648, -2147483648); assertEq(2147483648 & x, -2147483648); assertEq(x ^ 2147483648, 0); assertEq(2147483648 ^ x, 0); assertEq(x >> 2147483648, -2147483648); assertEq(2147483648 >> x, -2147483648); assertEq(x >>> 2147483648, 2147483648); assertEq(2147483648 >>> x, 2147483648); assertEq(x << 2147483648, -2147483648); assertEq(2147483648 << x, -2147483648); assertEq(x | 4294967296, -2147483648); assertEq(4294967296 | x, -2147483648); assertEq(x & 4294967296, 0); assertEq(4294967296 & x, 0); assertEq(x ^ 4294967296, -2147483648); assertEq(4294967296 ^ x, -2147483648); assertEq(x >> 4294967296, -2147483648); assertEq(4294967296 >> x, 0); assertEq(x >>> 4294967296, 2147483648); assertEq(4294967296 >>> x, 0); assertEq(x << 4294967296, -2147483648); assertEq(4294967296 << x, 0); assertEq(x | undefined, -2147483648); assertEq(undefined | x, -2147483648); assertEq(x & undefined, 0); assertEq(undefined & x, 0); assertEq(x ^ undefined, -2147483648); assertEq(undefined ^ x, -2147483648); assertEq(x >> undefined, -2147483648); assertEq(undefined >> x, 0); assertEq(x >>> undefined, 2147483648); assertEq(undefined >>> x, 0); assertEq(x << undefined, -2147483648); assertEq(undefined << x, 0); assertEq(x | null, -2147483648); assertEq(null | x, -2147483648); assertEq(x & null, 0); assertEq(null & x, 0); assertEq(x ^ null, -2147483648); assertEq(null ^ x, -2147483648); assertEq(x >> null, -2147483648); assertEq(null >> x, 0); assertEq(x >>> null, 2147483648); assertEq(null >>> x, 0); assertEq(x << null, -2147483648); assertEq(null << x, 0); assertEq(x | false, -2147483648); assertEq(false | x, -2147483648); assertEq(x & false, 0); assertEq(false & x, 0); assertEq(x ^ false, -2147483648); assertEq(false ^ x, -2147483648); assertEq(x >> false, -2147483648); assertEq(false >> x, 0); assertEq(x >>> false, 2147483648); assertEq(false >>> x, 0); assertEq(x << false, -2147483648); assertEq(false << x, 0); assertEq(x | true, -2147483647); assertEq(true | x, -2147483647); assertEq(x & true, 0); assertEq(true & x, 0); assertEq(x ^ true, -2147483647); assertEq(true ^ x, -2147483647); assertEq(x >> true, -1073741824); assertEq(true >> x, 1); assertEq(x >>> true, 1073741824); assertEq(true >>> x, 1); assertEq(x << true, 0); assertEq(true << x, 1); assertEq(x | -1.5, -1); assertEq(-1.5 | x, -1); assertEq(x & -1.5, -2147483648); assertEq(-1.5 & x, -2147483648); assertEq(x ^ -1.5, 2147483647); assertEq(-1.5 ^ x, 2147483647); assertEq(x >> -1.5, -1); assertEq(-1.5 >> x, -1); assertEq(x >>> -1.5, 1); assertEq(-1.5 >>> x, 4294967295); assertEq(x << -1.5, 0); assertEq(-1.5 << x, -1); } test4(2147483648) function test5 (x) { assertEq(x | -1, -1); assertEq(-1 | x, -1); assertEq(x & -1, -2147483648); assertEq(-1 & x, -2147483648); assertEq(x ^ -1, 2147483647); assertEq(-1 ^ x, 2147483647); assertEq(x >> -1, -1); assertEq(-1 >> x, -1); assertEq(x >>> -1, 1); assertEq(-1 >>> x, 4294967295); assertEq(x << -1, 0); assertEq(-1 << x, -1); assertEq(x | 1, -2147483647); assertEq(1 | x, -2147483647); assertEq(x & 1, 0); assertEq(1 & x, 0); assertEq(x ^ 1, -2147483647); assertEq(1 ^ x, -2147483647); assertEq(x >> 1, -1073741824); assertEq(1 >> x, 1); assertEq(x >>> 1, 1073741824); assertEq(1 >>> x, 1); assertEq(x << 1, 0); assertEq(1 << x, 1); assertEq(x | 0, -2147483648); assertEq(0 | x, -2147483648); assertEq(x & 0, 0); assertEq(0 & x, 0); assertEq(x ^ 0, -2147483648); assertEq(0 ^ x, -2147483648); assertEq(x >> 0, -2147483648); assertEq(0 >> x, 0); assertEq(x >>> 0, 2147483648); assertEq(0 >>> x, 0); assertEq(x << 0, -2147483648); assertEq(0 << x, 0); assertEq(x | 0xffffffff, -1); assertEq(0xffffffff | x, -1); assertEq(x & 0xffffffff, -2147483648); assertEq(0xffffffff & x, -2147483648); assertEq(x ^ 0xffffffff, 2147483647); assertEq(0xffffffff ^ x, 2147483647); assertEq(x >> 0xffffffff, -1); assertEq(0xffffffff >> x, -1); assertEq(x >>> 0xffffffff, 1); assertEq(0xffffffff >>> x, 4294967295); assertEq(x << 0xffffffff, 0); assertEq(0xffffffff << x, -1); assertEq(x | "10.6", -2147483638); assertEq("10.6" | x, -2147483638); assertEq(x & "10.6", 0); assertEq("10.6" & x, 0); assertEq(x ^ "10.6", -2147483638); assertEq("10.6" ^ x, -2147483638); assertEq(x >> "10.6", -2097152); assertEq("10.6" >> x, 10); assertEq(x >>> "10.6", 2097152); assertEq("10.6" >>> x, 10); assertEq(x << "10.6", 0); assertEq("10.6" << x, 10); assertEq(x | 2147483648, -2147483648); assertEq(2147483648 | x, -2147483648); assertEq(x & 2147483648, -2147483648); assertEq(2147483648 & x, -2147483648); assertEq(x ^ 2147483648, 0); assertEq(2147483648 ^ x, 0); assertEq(x >> 2147483648, -2147483648); assertEq(2147483648 >> x, -2147483648); assertEq(x >>> 2147483648, 2147483648); assertEq(2147483648 >>> x, 2147483648); assertEq(x << 2147483648, -2147483648); assertEq(2147483648 << x, -2147483648); assertEq(x | 4294967296, -2147483648); assertEq(4294967296 | x, -2147483648); assertEq(x & 4294967296, 0); assertEq(4294967296 & x, 0); assertEq(x ^ 4294967296, -2147483648); assertEq(4294967296 ^ x, -2147483648); assertEq(x >> 4294967296, -2147483648); assertEq(4294967296 >> x, 0); assertEq(x >>> 4294967296, 2147483648); assertEq(4294967296 >>> x, 0); assertEq(x << 4294967296, -2147483648); assertEq(4294967296 << x, 0); assertEq(x | undefined, -2147483648); assertEq(undefined | x, -2147483648); assertEq(x & undefined, 0); assertEq(undefined & x, 0); assertEq(x ^ undefined, -2147483648); assertEq(undefined ^ x, -2147483648); assertEq(x >> undefined, -2147483648); assertEq(undefined >> x, 0); assertEq(x >>> undefined, 2147483648); assertEq(undefined >>> x, 0); assertEq(x << undefined, -2147483648); assertEq(undefined << x, 0); assertEq(x | null, -2147483648); assertEq(null | x, -2147483648); assertEq(x & null, 0); assertEq(null & x, 0); assertEq(x ^ null, -2147483648); assertEq(null ^ x, -2147483648); assertEq(x >> null, -2147483648); assertEq(null >> x, 0); assertEq(x >>> null, 2147483648); assertEq(null >>> x, 0); assertEq(x << null, -2147483648); assertEq(null << x, 0); assertEq(x | false, -2147483648); assertEq(false | x, -2147483648); assertEq(x & false, 0); assertEq(false & x, 0); assertEq(x ^ false, -2147483648); assertEq(false ^ x, -2147483648); assertEq(x >> false, -2147483648); assertEq(false >> x, 0); assertEq(x >>> false, 2147483648); assertEq(false >>> x, 0); assertEq(x << false, -2147483648); assertEq(false << x, 0); assertEq(x | true, -2147483647); assertEq(true | x, -2147483647); assertEq(x & true, 0); assertEq(true & x, 0); assertEq(x ^ true, -2147483647); assertEq(true ^ x, -2147483647); assertEq(x >> true, -1073741824); assertEq(true >> x, 1); assertEq(x >>> true, 1073741824); assertEq(true >>> x, 1); assertEq(x << true, 0); assertEq(true << x, 1); assertEq(x | -1.5, -1); assertEq(-1.5 | x, -1); assertEq(x & -1.5, -2147483648); assertEq(-1.5 & x, -2147483648); assertEq(x ^ -1.5, 2147483647); assertEq(-1.5 ^ x, 2147483647); assertEq(x >> -1.5, -1); assertEq(-1.5 >> x, -1); assertEq(x >>> -1.5, 1); assertEq(-1.5 >>> x, 4294967295); assertEq(x << -1.5, 0); assertEq(-1.5 << x, -1); } test5(-2147483648)