Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数学。随机和算术移位_Javascript_Bit Shift - Fatal编程技术网

Javascript 数学。随机和算术移位

Javascript 数学。随机和算术移位,javascript,bit-shift,Javascript,Bit Shift,如果我有以下JavaScript代码: var index1 = (Math.random() * 6) >> 0; var index2 = Math.floor(Math.random() * 6); index1或index2的结果介于0和6之间 我对>>运算符的理解一定有误。我认为通过使用index1的结果将介于1和6之间 但是,我注意到,如果我使用操作符,我不需要对index1使用Math.floor()或Math.round() 我知道我可以通过将1添加到两个索引中来实

如果我有以下JavaScript代码:

var index1 = (Math.random() * 6) >> 0;
var index2 = Math.floor(Math.random() * 6);
index1
index2
的结果介于
0
6
之间

我对
>>
运算符的理解一定有误。我认为通过使用
index1
的结果将介于
1
6
之间

但是,我注意到,如果我使用
操作符,我不需要对
index1
使用
Math.floor()
Math.round()

我知道我可以通过将
1
添加到两个索引中来实现这一点,但我希望有更好的方法来确保结果从
1
添加到
6
,而不是添加
1

我知道它们的操作数是32位(0和1)的序列,而不是十进制、十六进制或八进制数。例如,十进制数字9的二进制表示为1001。按位运算符对这种二进制表示执行操作,但返回标准JavaScript数值

更新:

我在第26行看到了这个CAAT的最初用法,我想知道它是否会返回一个介于
1
6
之间的随机数,而且它似乎只会返回一个介于
0
6
之间的随机数。所以你永远不会真正看到
anim1.png
fish图像

提前感谢您提供的任何启示。

维基百科说(负数的算术右移相当于在某些历史计算机使用的符号数字的补码表示中使用向0舍入的除法)

这不完全是一个答案,但其思想是>>0确实是特定的,一般不应用于获取1到6之间的范围

大多数人都会告诉你去做

 Math.floor((Math.random()*10)+1);
维基百科说(负数的算术右移相当于一些历史上的计算机使用的符号数字的补码表示法中使用向0舍入的除法)

这不完全是一个答案,但其思想是>>0确实是特定的,一般不应用于获取1到6之间的范围

大多数人都会告诉你去做

 Math.floor((Math.random()*10)+1);

您不应该在javascript中使用位运算符。数字被实现为64个浮点,并在内部转换为32位整数进行运算,然后再转换回来@Walkereno感谢您的链接。请注意,使用内部方法将值转换为整数的算法的第5步。@walkereno这是一个有点笼统的语句。也许OP在这种情况下没有明智地使用它,但按位运算符有它们的用途。@RobG,嗯,来自Skeetman本人:。编辑:如果你遇到过其他用法,你仍然对它们感兴趣。你不应该在javascript中使用位运算符。数字被实现为64个浮点,并在内部转换为32位整数进行运算,然后再转换回来@Walkereno感谢您的链接。请注意,使用内部方法将值转换为整数的算法的第5步。@walkereno这是一个有点笼统的语句。也许OP在这种情况下没有明智地使用它,但按位运算符有它们的用途。@RobG,嗯,来自Skeetman本人:。编辑:如果你遇到过其他用途,你仍然对它们感兴趣。对于1到6的范围,乘数不应该是6吗?或者使用
Math.ceil
和5的乘数。对于1到6的范围,乘数不应该是6吗?或者使用
Math.ceil
和5的乘数。