Estoy tratando de revertir el entero sin signo de 32 bits convirtiéndolo primero en una cadena, pero la función toString(2) está confirmando los ceros desde el final y, por eso, el resultado que obtengo es incorrecto.
Mi código:
var reverseBits = function(n) { let reverserN=(n>>>0).toString(2).split('').reverse().join(''); console.log(reverserN) return parseInt(reverserN,2) };Producción:
Su entrada 00000010100101000001111010011100
stdout 00111001011110000010100101 //0 omitido del final
Salida 15065253 (00000000111001011110000010100101)
Esperado 964176192 (00111001011110000010100101000000)
Y, si trato de usar BigInt , me da n al final. Me gusta este 00111001011110000010100101n .
¿Por qué se omiten los 0? ¿Y cómo puedo evitar que omita 0 al final?
Agregando padEnd(32,0) después de que join('') funcione. Que simplemente agregó 0 al final de la cadena resultante para que alcance una longitud determinada.
Mi código:
var reverseBits = function(n) { let reverserN=(n>>>0).toString(2).split('').reverse().join('').padEnd(32,0); console.log(reverserN); return parseInt(reverserN,2) };Producción:
00111001011110000010100101000000 //6 0's at the end of the string