This sample code from Mozilla's JS reference使用>>和>>> RHS参数为0的运算符。我猜这是Math.floor()的替代方法,它具有性能优势,因为它使用内置运算符而不必查找函数。但是>>的区别是什么vs>>>零班制?
答案 0 :(得分:2)
来自MDN Article:
>>
是Sign-propagating right shift:
向右移位二进制表示b(< 32)位,丢弃移位的位。
向右移位二进制表示b(<32)位,丢弃移位的位,并从左移零。
所以不同的是,一个人会从左边移零。
从this stackoverflow answer谈到零班:
因此,在没有实际效果的情况下执行按位运算,例如向右移位0位&gt;&gt; 0,是一种快速的方法来舍入数字并确保它在32位int范围内。另外,三重&gt;&gt;运算符在执行无符号运算后,将其计算结果转换为无符号整数而不是其他有符号整数,因此可将其用于将负数转换为32位二进制补码版本为大号。使用&gt;&gt;&gt; 0可确保您获得0到0xFFFFFFFF之间的整数。
答案 1 :(得分:1)
它将它们转换为可以表示为32位无符号整数的数字。所以是的,它会使它(一个数字类型)作为一个内置的int,它也会使它成为一个32位无符号,JS编程喜欢它:)
主要区别在于签名与未签名。