javascript - 为什么 JavaScript 中 >>> 100 不会产生 0?

标签 javascript firefox bit-shift

所以我在控制台中尝试着切换,结果让我难住了。

输入:

a = -1
a >>> 100

输出:

268435455

我查看了Mozilla reference page about it ,但它没有提到当你大量移动时 >>> 的行为。我假设用零填充将所有位向右移动将导致零。

这是 Firefox 中的错误还是什么?

最佳答案

看来您最多只能移动 31。

来自您在帖子中链接的网站 ( MDN ):

Shifts a in binary representation b (< 32) bits to the right, discarding bits shifted off, and shifting in zeros from the left.

来自实际规范 ( Page 77 )

Let shiftCount be the result of masking out all but the least significant 5 bits of rnum, that is, compute rnum & 0x1F.

实际发生的情况是,当您移动 100 时,它会移动 (100 & 0x1F) 或 4。

-1 >>> 100 === -1 >>> 4

如果您将其分成多个类次,那么它会起作用:

-1 >>> 25 >>> 25 >>> 25 >>> 25 === 0

关于javascript - 为什么 JavaScript 中 >>> 100 不会产生 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19825435/

相关文章:

java - 移位运算符如何在 Java 中工作?

vb.net - 如何在VB.NET中按位转换?

通过在 C 中移动 3 个整数来构造 key

javascript - 要求内部新功能

javascript - 如何使用 document.querySelectorAll 选择除 anchor (另一个元素内的 anchor )以外的所有标签?

javascript - 在条形图中使用 json url 数据

php - 强制 Firefox 进入标准合规模式

javascript - ExtJS 6 - 输入类型为 'password' 的文本字段在 Chrome 开发工具中生成警告

CSS 代码在 Firefox 和 IE 中不起作用

html - 为什么 HTML 视频标签仅在 Mozilla Firefox 中颠倒显示视频?