如果我在JavaScript中有以下代码:
var index1 = (Math.random() * 6) >> 0;
var index2 = Math.floor(Math.random() * 6);index1或index2的结果介于0和6之间。
我必须混淆我对>>运算符的理解。我认为通过使用算术移位,index1的结果将介于1和6之间。
但是,我注意到,如果我使用Math.floor()运算符,则不需要对index1使用>>或>>。
我知道我可以通过在两个索引中添加1来实现这一点,但是我希望有一个更好的方法来确保结果从1到6而不是添加1。
我知道,位运算符将它们的操作数视为32位(0和1)的序列,而不是十进制、十六进制或八进制数。例如,十进制数9的二进制表示形式为1001。按位运算符在这种二进制表示上执行操作,但它们返回标准的JavaScript数值。
更新:
我在第26行的CAAT 教程中看到了最初的用法,我想知道它是否真的会在1和6之间返回一个随机数,而且它似乎只会在0和6之间返回一个随机数。因此,您将永远不会真正看到anim1.png鱼的图像!
提前感谢你的开悟。
发布于 2013-03-26 05:59:44
维基百科说:“(负数的算术右移就相当于除法,在有符号数字的补码表示法中使用零四舍五入,就像一些历史上的计算机使用的那样)。”
这并不是一个确切的答案,但是我们的想法是,>> 0确实是特定的,不应该在一般情况下用于获得1到6之间的范围。
大多数人都会告诉你
Math.floor((Math.random()*10)+1);https://stackoverflow.com/questions/15630141
复制相似问题