Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

234
Vistas
¿Es correcta la solución de bits inversos utilizando resultados de desplazamiento a la izquierda?

Tratando de resolver la solución de bits inversos utilizando los resultados de desplazamiento a la izquierda, el problema dice Reverse bits of a given 32 bits unsigned integer.

 Input: n = 00000010100101000001111010011100 Output: 964176192 (00111001011110000010100101000000) Explanation: The input binary string 00000010100101000001111010011100 represents the unsigned integer 43261596, so return 964176192 which its binary representation is 00111001011110000010100101000000.

Aquí, en el código de la solución, se repite 32 veces, luego se desplaza el resultado a la izquierda, y luego, si num & 1 es mayor que 0, ie its 1 Luego se incrementa el resultado y también se shift nums by 1 o nums modulus 2 y finalmente se devuelve el result

por qué el resultado es 0, any thoughts and updated solution for this code

 let reverseBits = function(nums) { let result = 0 for (let i = 1; i <= 32; i++) { result <<= 1 if (nums & 1 > 0) result++ nums >>= 1 } return result } console.log(reverseBits(11111111111111111111111111111101))

La salida se muestra como 0

 PS C:\VSB-PRO> node Fibo.js 0
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Algunos asuntos:

  • El valor de ejemplo que pasa como argumento a su función no se da en notación binaria, sino en notación decimal, por lo que es un número diferente al previsto. Use el prefijo 0b para literales en notación binaria.

  • Al usar el operador << (y =<< ), JavaScript interpretará el bit 32 como un bit de signo. Supongo que no tiene la intención de producir valores negativos, así que evítelo usando una multiplicación por 2 en lugar del operador de cambio.

No hay problema, pero:

  • El operador >> tendrá un efecto específico en los números que tienen el bit 32 establecido: ese bit se mantendrá después del cambio. Como su secuencia de comandos nunca inspecciona ese bit, no es un problema, pero sería más natural si se cambiaran 0 bits. Para eso puedes usar el operador >>> .

  • Finalmente, puede ser útil generar el valor de retorno en notación binaria para que pueda verificar el resultado más fácilmente.

 let reverseBits = function(nums) { let result = 0; for (let i = 1; i <= 32; i++) { // use multiplication to avoid sign bit interpretation result *= 2; if (nums & 1 > 0) result++; nums >>>= 1; } return result; } // Express number in binary notation: let n = 0b11111111111111111111111111111101; let result = reverseBits(n); // Display result in binary notation console.log(result.toString(2));

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda