【技术讲座】JavaScript 中的位运算溢出:(2**31) | 0 为什么会变成负数? 引言 在 JavaScript 中,位运算是一种非常基础且强大的操作,它允许开发者以位级别对数字进行操作。然而,由于 JavaScript 的数值表示方式,位运算有时会导致意想不到的结果,特别是当涉及到整数溢出时。本文将深入探讨 JavaScript 中的位运算溢出问题,特别是为什么 (2**31) | 0 会变成一个负数。 JavaScript 的数值表示 JavaScript 使用 IEEE 754 双精度浮点数格式来表示数值。这意味着 JavaScript 中的所有数字都是浮点数,即使是整数。在 JavaScript 中,数字的表示范围从 -2^53 + 1 到 2^53 – 1。 位运算与溢出 位运算包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)和左移(<<)、右移(>>)等。当进行位运算时,如果操作数超出了 JavaScript 能表示的范围,就会发生溢出。 (2**31) | 0 为什么会变成负数 在 JavaScript …