2010-09-17 30 views
9

tengo este pedazo de código javascript que estoy tratando de entender¿Qué significa '>>>' en javascript?

return (n >>> 0) * 2.34e10; 

Entonces, ¿qué significa >>>?

y gracias de antemano ... esta es mi primera pregunta sobre SO

Respuesta

17

Es un zero-fill right shift. Esto no hará nada con los números enteros positivos o con 0, pero sí con los números negativos (porque es most significant bit changes to zero).

2 >>> 0 === 2 
1 >>> 0 === 1 
0 >>> 0 === 0 
-1 >>> 0 === 4294967295 
-2 >>> 0 === 4294967294 
-3 >>> 0 === 4294967293 

Debe tenerse en cuenta (gracias Andy!) Que poco cambio en JavaScript converts the arguments to signed 32-bit integers antes de hacer el cambio. Por lo tanto >>> 0 hace esencialmente un Math.floor en números positivos:

1.1 >>> 0 === 1 
1.9 >>> 0 === 1 
+0

Quería +1, pero me sentí obligado a realizar primero una edición menor ;-) También podría ampliar lo que hará con las carrozas positivas, si quiere :-) –

+1

@Andy Muy apreciado, y buen punto. – Skilldrick

+0

Brillante !! ... Muchas gracias Skilldrick, Andy E y acqu13sce. Gracias también por las referencias. –

1

Es un operador de bits. Significa cambio n por 0 bits. No estoy seguro de lo que está tratando de hacer en la instancia que muestra.

a >>> b // shift a by b bits to the right, padding with zeros 
+1

'(a >>> 0)' se utiliza para forzar a 'a' a un entero sin signo de 32 bits. –