1 << -1 // 結果:-2147483648 (即 -2^31)
表面看是左移 -1 位(相當於右移 1 位),實際等價於 1 << 31。
規則(Java/JavaScript 32 位整型):m << -n ≡ m << (-n % 32 + 32)。C 語言編譯報錯,但 Java 結果相同。長整型 1L << -1 → -9223372036854775808(-2^63)。
1 >> -1 固定為 0。
1 << 31 是負數1 補碼:000...001(32 位)100...000 = -2147483648(最小 int)(1 << 31) - 1 跨語言差異2147483647-2147483649-13 >> 2步驟:
-13 原碼:100...11010010 +1 → 0011 → 111...0011111...1100111...1100 → 原碼 100...0100 = -4速記法:算術右移 1 位 = 除以 2 向下取整。-13/2 = -6.5 → -7,再 /2 = -3.5 → -4。