3

我正在查看 Stack 上的一些素数代码并找到了这个。

我尝试对此进行了一段时间的试验并发现了这一点:

var i = 5;
var j = 0;

如果我写 j = i << 1,它所做的只是将 (i * 2) ie - 10 在这种情况下分配给 j

如果我写 j = i << 2, (i * 2) * 2 即 - 10 * 2 .....等等。

现在我怀疑这个操作员实际上是做什么的?

我尝试用谷歌搜索,但没有找到任何直接的解决方案。

4

3 回答 3

6

这些是Javascript中的位运算符。

按位运算符将其操作数视为 32 位(零和一)的序列,而不是十进制、十六进制或八进制数。例如,十进制数字 9 的二进制表示为 1001。按位运算符在这种二进制表示上执行操作,但它们返回标准的 JavaScript 数值。

左移运算符:

a << b :将二进制表示中的 a b (< 32) 位左移,从右移零。

于 2013-06-05T12:44:07.737 回答
1

<<是左移运算符。每个位将左移指定的次数。示例:n<<2将按位移动n2 次,向右添加零。

n=4  // 0000 0000 0000 0100
n<<2 //<= 0000 0000 0001 0000 - Value is 16
于 2013-06-05T12:44:50.077 回答
0

<<运算符[ ES5 规范]是左移位运算符。它取左边的数字,并移动与右边数字一样多的位。i << 2,例如,会将 的数字i向左移动 2 位。

var i = 5;  // i: 0000 0000 0000 0101
i = i << 2; // i: 0000 0000 0001 0100
于 2013-06-05T12:45:18.227 回答