Javascript 目的>&燃气轮机;0和>&燃气轮机&燃气轮机;0

Javascript 目的>&燃气轮机;0和>&燃气轮机&燃气轮机;0,javascript,Javascript,使用RHS参数为0的>>和>>>运算符。我想这是Math.floor()的一种替代方法,它具有性能优势,因为它使用内置运算符,而不必查找函数。但是>>与>>>之间的零偏移有什么区别呢?来自: >是一个: 将二进制表示b中的a(是一个: 将二进制表示b中的a(>0的右移)是对数字进行四舍五入并确保其在32位整数范围内的一种快速方法。此外,triple>>>运算符在执行无符号运算后,将其计算结果转换为无符号整数,而不是其他运算符所转换的有符号整数,因此可以使用它将负数转换为32位二补形式的大数。使用

使用RHS参数为0的>>和>>>运算符。我想这是Math.floor()的一种替代方法,它具有性能优势,因为它使用内置运算符,而不必查找函数。但是>>与>>>之间的零偏移有什么区别呢?

来自:

>
是一个:

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

>
是一个:

将二进制表示b中的a(<32)位向右移位,丢弃移位后的位,并从左移位为零

所以不同的是,一个将从左移为零

从谈论零偏移开始:

因此,在没有实际效果的情况下执行逐位操作(如0位>>0的右移)是对数字进行四舍五入并确保其在32位整数范围内的一种快速方法。此外,triple>>>运算符在执行无符号运算后,将其计算结果转换为无符号整数,而不是其他运算符所转换的有符号整数,因此可以使用它将负数转换为32位二补形式的大数。使用>>>0可确保得到一个介于0和0xFFFFFFFF之间的整数


它将它们转换为可以表示为32位无符号整数的数字。因此,是的,它将使它成为一个(typeof number)作为一个floored int,它还将使它成为一个32位的无符号的,这是JS编程喜欢的:)


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

它们非常适合于代码高尔夫:)区别在于它们如何处理负数。在polyfill中,数组长度永远不能小于
0
(空数组),因此使用
>
是可以的,但有人可以为
目标传递负数,因此保留符号至关重要,因此使用
>
。例如,
-3>>0
仍然是
-3
,但是
-3>>0
返回
4294967293
,因为零在左侧移位,因此,这可能会为
目标
变量创建一个意外的结果。另一个变量的一半输入也会从左侧移入零。这并没有回答以下问题:移入零会有什么不同?