| 123456789101112131415161718192021222324252627282930313233343536373839 | 'use strict'/** * @param {number} n - a positive integer * @return {number} - a positive integer */var reverseBitsOld = function (n) {    let res = 0    let last    for (let i = 0; i < 32; i++) {        last = n & 1        n >>= 1        res <<= 1        res += last    }    return res >>> 0}// [note] in js, signed -> unsigned: n >>> 0var reverseBits = function (n) {    for (let i = 0, j = 31; i <= j; i++, j--) {        let bit = (1 << i & n) >>> i ^ (1 << j & n) >>> j        n ^= bit << j        n ^= bit << i    }    return n >>> 0}function __main__() {    /*eslint no-console: ["error", { allow: ["log"] }] */    console.log(reverseBits(4294967295))    console.log(reverseBits(43261596))    console.log(reverseBits(1))    console.log(reverseBitsOld(4294967295))    console.log(reverseBitsOld(43261596))    console.log(reverseBitsOld(1))}__main__()
 |