190.js 823 B

123456789101112131415161718192021222324252627282930313233343536
  1. /**
  2. * @param {number} n - a positive integer
  3. * @return {number} - a positive integer
  4. */
  5. var reverseBitsOld = function(n) {
  6. let res = 0
  7. let last
  8. for (let i = 0; i < 32; i++) {
  9. last = n & 1
  10. n >>= 1
  11. res <<= 1
  12. res += last
  13. }
  14. return res >>> 0
  15. };
  16. // [note] in js, signed -> unsigned: n >>> 0
  17. var reverseBits = function(n) {
  18. for (let i = 0, j = 31; i <= j; i++, j--) {
  19. let bit = (1 << i & n) >>> i ^ (1 << j & n) >>> j
  20. n ^= bit << j
  21. n ^= bit << i
  22. }
  23. return n >>> 0
  24. };
  25. function __main__() {
  26. console.log(reverseBits(4294967295))
  27. console.log(reverseBits(43261596))
  28. console.log(reverseBits(1))
  29. console.log(reverseBitsOld(4294967295))
  30. console.log(reverseBitsOld(43261596))
  31. console.log(reverseBitsOld(1))
  32. }
  33. __main__()