text: #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  '''
  *****************************************
  Author:         zhlinh
  Email:          zhlinhng@gmail.com
  Version:        0.0.1
  Created Time:   2016-03-23
  Last_modify:    2016-03-23
  ******************************************
  '''
  
  '''
  Reverse bits of a given 32 bits unsigned integer.
  
  For example, given input 43261596
  (represented in binary as 00000010100101000001111010011100),
  return 964176192 (represented in binary as 00111001011110000010100101000000).
  
  Follow up:
  If this function is called many times, how would you optimize it?
  
  Related problem: Reverse Integer
  
  Credits:
  Special thanks to @ts for adding this problem and creating all test cases.
  '''
  
  class Solution(object):
      def reverseBits(self, n):
          """
          :type n: int
          :rtype: int
          """
          n = (n << 16) | (n >> 16)
          n = ((n & 0xFF00FF00) >> 8) | ((n & 0x00FF00FF) << 8)
          n = ((n & 0xF0F0F0F0) >> 4) | ((n & 0x0F0F0F0F) << 4)
          n = ((n & 0xCCCCCCCC) >> 2) | ((n & 0x33333333) << 2)
          n = ((n & 0xAAAAAAAA) >> 1) | ((n & 0x55555555) << 1)
          return n
  