【发布时间】:2011-04-13 15:55:08
【问题描述】:
我有一段我想要理解的 javascript 代码
return ( n >>> 0 ) * 2.34e10;
那么>>>是什么意思?
提前感谢...这是我关于 SO 的第一个问题
【问题讨论】:
标签: javascript
我有一段我想要理解的 javascript 代码
return ( n >>> 0 ) * 2.34e10;
那么>>>是什么意思?
提前感谢...这是我关于 SO 的第一个问题
【问题讨论】:
标签: javascript
这是一个zero-fill right shift。这不会对正整数或 0 做任何事情,但它会对负数做一些有趣的事情(因为 most significant bit changes to zero)。
2 >>> 0 === 2
1 >>> 0 === 1
0 >>> 0 === 0
-1 >>> 0 === 4294967295
-2 >>> 0 === 4294967294
-3 >>> 0 === 4294967293
应该注意(感谢 Andy!)在 JavaScript converts the arguments to signed 32-bit integers 中进行移位之前进行移位。因此>>> 0 本质上是对正数执行Math.floor:
1.1 >>> 0 === 1
1.9 >>> 0 === 1
【讨论】:
>>> 是无符号右移,>> 是有符号右移。前者使用 ToUint32 转换 RHS,这就是所谓的。
这是一个位运算符。这意味着将 n 移动 0 位。不确定它在您显示的实例中尝试做什么。
a >>> b // shift a by b bits to the right, padding with zeros
【讨论】:
(a >>> 0) 用于将 a 强制转换为 32 位无符号整数。