| 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 >>> 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__() {
 
-     /*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__()
 
 
  |