1234567891011121314151617181920212223242526272829303132333435363738 |
- '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__() {
- 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__()
|