右移运算符 - Javascript
Right shift operator - Javascript
我试图理解为什么,即 Math.random()*255>>0;
将跳过/删除所有小数。如果我写>>1
或>>2
而不是 0,也会发生同样的事情。
我翻过另一个SO帖子,说x >> n
操作员可以被视为x / 2^n
。这仍然不能解释为什么小数消失了。
任何帮助将不胜感激!
根据规范,首先需要某些数值运算才能将参数转换为 32 位整数。(http://www.ecma-international.org/ecma-262/5.1/#sec-11.7.2)
生产
ShiftExpression
:ShiftExpression
>>AdditiveExpression
的评估如下:
- 让
lref
成为评估ShiftExpression
的结果。- 让我们
lval
成为 GetValue(lref
)。- 让
rref
成为评估AdditiveExpression
的结果。- 让我们
rval
成为 GetValue(rref
)。- 设
lnum
ToInt32(lval
)。← 此处将数字转换为 32 位整数- 让我们
rnum
是ToUint32(rval
)。- 设
shiftCount
屏蔽除最低有效 5 位之外的所有rnum
的结果,即计算rnum & 0x1F
。- 返回执行
lnum
的符号扩展右移shiftCount
位的结果。传播最高有效位。结果是一个有符号的 32 位整数。
相关文章:
- 这是什么 ==- javascript 运算符
- Javascript逻辑运算符和字符串/数字
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 需要有关 HTML 中 Javascript 运算符比较的帮助
- ~ 和 - Javascript 运算符问题
- Javascript:++运算符如何工作
- JavaScript运算符+dons'工作不正常
- 使用Javascript+=运算符的正确方法
- Javascript 运算符问题.值必须至少为 4 且为偶数
- Javascript ||运算符仍返回 NaN
- Javascript:运算符重载
- 对 JavaScript 运算符的建议
- 使用JavaScript运算符 - 对我来说是新的
- Javascript 运算符 += 不会接受负数
- 是新的,这个,删除,类型是javascript运算符
- JavaScript运算符||(逻辑OR)
- 为什么“;new Date().toString()"给定Javascript运算符优先级的工作
- 为什么Javascript运算符“&&”如此奇怪
- Javascript ||运算符根据顺序给出不同的结果
- JavaScript && 运算符没有 =