我正在浏览Stack上的素数代码,并找到了这个。
我尝试了一段时间并想出了这个:
var i = 5;
var j = 0;
如果我写 j = i<< 1,它所做的只是指定(i * 2),即在这种情况下-10到j
如果我写 j = i<< 2,(i * 2)* 2即 - 10 * 2 .....等等。
现在我怀疑这个运营商到底做了什么?
我试过谷歌搜索,但没有找到任何直接的解决方案。
答案 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