JavaScript中的双大于号是什么意思?

26

在JavaScript中,>>是什么意思?

在这种情况下出现:

document.onkeydown = document.onkeyup = function(e,v,y,k) {
  (i=e.keyCode-37)>>2 || (keys[i] = e.type[5]&&1||(0))
}

3
我会解雇写那行代码的人。 - Tony Dinh
4个回答

25

>>位运算右移操作符

例如:4 >> 1 等于 2,因为4在二进制表示中是100,向右移动一位后得到10 = 2


在这个上下文中,获取二进制表示转换并使用位右移运算符的意义是什么? - bcm
我不认为这样做有什么理由。他们本可以写成 (i=e.keyCode-37)/4,因为右移两位与除以四本质上是相同的。 - Mårten Wikström

23

Javascript 位运算符

左移运算符 a << b 将二进制表示的 a 向左移动 b(小于32)位, 同时从右侧移入零。

右移运算符(带符号) a >> b 将二进制表示的 a 向右移动 b(小于32)位,丢弃被移出的位。


3
(i=e.keyCode-37)>>2

这段代码丢弃了i的最后两位(类似于除以4),并将结果与零进行比较。当按下的键是37-40(箭头键)时,结果为false,否则为true。


0

这是位运算符(参见此处)。

至于它在这里到底做了什么,我不太确定... 我相信一些完成大学学业的高材生可以帮助我们解决这个问题。 ;^)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接