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__()
|