>> 0 和 >>> 0 的目的

Purpose of >> 0 and >>> 0

本文关键字:      更新时间:2023-09-26

这个来自Mozilla的JS参考的示例代码使用>>和>>>运算符,RHS参数为0。我想这是 Math.floor() 的替代方案,它具有性能优势,因为它使用内置运算符而不必查找函数。但是>>与>>>零班有什么区别呢?

来自 MDN 文章:

>>是一个符号传播右移:

将二进制表示中的 a 向右移动 b (<32) 位,丢弃移出的位。

>>>是零填充右移:

将二进制表示形式中的 a b (<32) 位向右移动,丢弃移出的位,并从左移零。

所以区别在于一个人会从左边移零。

从这个堆栈溢出答案中谈到零移位:

因此,执行没有实际效果的按位操作(例如 0 位>>0 的右移)是舍入数字并确保其在 32 位 int 范围内的快速方法。此外,三重>>>运算符在执行其无符号操作后,将其计算结果转换为 Number 作为无符号整数,而不是其他人所做的有符号整数,因此它可用于将负数转换为 32 位二进制补码版本作为大数字。使用>>>0 可确保获得介于 0 和 0xFFFFFFFF 之间的整数。

它将它们转换为可以表示为 32 位无符号整数的数字。所以是的,它会使其成为一个(类型数字)作为地板 int,它还会使它成为一个 32 位无符号,JS 编程喜欢:)

主要区别在于有符号与无符号。

相关文章:
  • 没有找到相关文章