operadores - ¿Cuál es la diferencia entre el operador>>> en Java y JavaScript?
operador=== (1)
Código de JavaScript:
alert( -123456 >>> 0 ); // Prints 4294843840
Código de Java:
System.out.println( -123456 >>> 0 ); // Prints -123456
¿Por qué? He leído documentación, pero no encontré la diferencia. ¿Cómo puerto código de JavaScript a Java?
Ambos son el cambio lógico hacia la derecha, pero JavaScript tiene cierta rareza en la forma en que maneja los números. Normalmente, los números en JavaScript son flotantes, pero las operaciones a nivel de bits los convierten en enteros de 32 bits sin signo. Entonces, aunque el valor parece que no debería cambiar, convierte el número en un entero sin signo de 32 bits.
El valor que ve 4294843840
es exactamente los mismos bits que -123456
, pero interpretado como sin signo en lugar de firmado.