2011-04-03 18 views
20

¿Qué significa esto: >> significa en JavaScript?Doble más que el símbolo en JavaScript

Visto en este contexto:

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

explicación para el público cualquiera? – bcm

+0

Dispararía a quien haya escrito esa línea de código. – TrungDQ

Respuesta

17

Javascript Bitwise Operators

desplazamiento a la izquierda un < < b turnos en binario representación b (< 32) bits a la izquierda, cambiando en ceros de el a la derecha.

propagar Sign-desplazamiento a la derecha una >> b turnos en representación binaria b (< 32) bits a la derecha, descartando bits desplazados fuera.

21

>> es el bitwise right shift operator.

Por ejemplo: 4 >> 1 es igual a 4 2 porque es 100 en notación binaria, que está desplazado un poco hacia la derecha, que nos da 10 = 2

+0

¿cuál es el significado obteniendo la conversión de notación binaria, en este contexto, y luego usando el operador de desplazamiento a la derecha en modo bit? – bcm

+0

No veo una razón para ello. Podrían haberlo escrito como (i = e.keyCode-37)/4 en su lugar, dado que el desplazamiento a la derecha de dos bits es esencialmente lo mismo que dividir por cuatro. –

0

Es el operador de desplazamiento en modo bit (ver here).

Ahora, en cuanto a exactamente lo que está haciendo aquí, no estoy seguro ... Estoy seguro de que algunos de nuestros bretheren de cerebro más grande que realmente terminaron la universidad podrían ayudarnos con eso. ; ^)

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

Este código está descartando los dos bits menos significativos de i (similares a dividir por 4), y comparando el resultado a cero. Esto será falso cuando la tecla presionada sea 37-40 (teclas de flecha), y verdadera de lo contrario.

Cuestiones relacionadas