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

279
Visualizações
¿Hay alguna diferencia entre estos dos fragmentos de código y, en caso afirmativo, cuál es?

 function addBinary(a,b) { let sum= a+b if (sum<0){ sum=0xffffffff+sum+1 } return parseInt(sum).toString(2) }

y especialmente la lógica de cómo se ha utilizado 0xffffffff para lograr el mismo resultado

 function decimalToBinary(decimal){ return (decimal >>> 0).toString(2); } function addBinary(a,b) { return decimalToBinary(a+b); }

about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

El operador >>> siempre interpreta el número dado como un número de 32 bits sin signo . Cuando el segundo operando es 0, nada cambia y el resultado no tiene signo.

Entonces, por ejemplo, -1 en binario es 0xffffffff en 32 bits con signo, donde el bit más significativo (a la izquierda) es el bit de signo. Pero debido a que, excepcionalmente, >>> no lo interpreta como un bit de signo, en realidad se ve como un número positivo, es decir, 0xffffffff. ¡Comparado con el -1 original, es 0x100000000 más! Esta es siempre la diferencia para las entradas negativas. Para -2 obtendrás 0xffffffffe, para -3 obtendrás 0xffffffffd, etc.

La primera función emula esto. Si la sum es negativa, debemos hacer algo, ya que la otra función (usando >>> ) nunca devolverá un número negativo.

La idea es agregar esa diferencia de 0x100000000. De hecho, el autor de esta función fue prudente y evidentemente no quería trabajar con números que excedieran el rango de 32 bits, por lo que 0x100000000 estaba fuera del tablero (usa 33 bits). Pero uno puede dividir el trabajo en partes. Podemos agregar uno menos (0xffffffff) a la suma y luego agregar el 1 restante. Sin embargo, esto es solo un juego teórico. En JavaScript no hay problema en agregar 0x100000000, por lo que también podrían haberlo hecho. Sin embargo, en otros lenguajes, aquellos que usan números de 32 bits, sería necesario agregar primero 0xffffffff y solo luego 1.

about 4 years ago · Santiago Gelvez 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