No sé por qué el resultado de dos derechas aritméticas es diferente. ¿Puedes arrojar luz sobre este problema?
x=-93242 for (let i=0; i<40; i++) x >>= 1; // now x is -1 y=-93242 y>>=40; // now y is not -1Javascript solo admite operaciones de bits de hasta 32 bits. Dado que está tratando de desplazar y hacia la derecha en 40 bits, en su lugar está devolviendo y>>=8 . Devolverá -1 si lo desplaza a la derecha 31 bits.
Dado que x cambia a la derecha solo una vez en cada iteración, permanece en -1 porque -1>>=1 siempre será -1 .