>> 0 和 >>> 0 的目的
Purpose of >> 0 and >>> 0
这个来自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 编程喜欢:)
主要区别在于有符号与无符号。
相关文章:
- 没有找到相关文章