123456789101112131415161718192021222324252627282930313233343536 |
- /**
- * @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 >>> 0
- var 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__() {
- 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__()
|