Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

235
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda