什么是我<< 1在Javascript中意味着什么?

时间:2013-06-05 12:42:16

标签: javascript html

我正在浏览Stack上的素数代码,并找到了这个。

我尝试了一段时间并想出了这个:

var i = 5;
var j = 0;

如果我写        j = i<< 1,它所做的只是指定(i * 2),即在这种情况下-10到j

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

现在我怀疑这个运营商到底做了什么?

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

3 个答案:

答案 0 :(得分:6)

这些是Javascript中的Bitwise Operators

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

左移操作员:

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

答案 1 :(得分:1)

<<是左移算子。每个位都会向左移动指定的次数。示例:n<<2按位移n 2次,向右添加零。

n=4  // 0000 0000 0000 0100
n<<2 //<= 0000 0000 0001 0000 - Value is 16

答案 2 :(得分:0)

The << operator[ES5 spec]是左移位运算符。它取左边的数字,并将位移动到右边的数字。例如,i << 2会将i的数字移到左侧2个位置。

var i = 5;  // i: 0000 0000 0000 0101
i = i << 2; // i: 0000 0000 0001 0100