问题的提出
给定一个无符号32位整数,要求将其2进制形式数反转(即首尾颠倒,非按位取反),输出反转后的整数。
即如果给定的数:43261596,它的二进制数为:00000010100101000001111010011100,将二进制数反转得到:00111001011110000010100101000000,所以期望的输出结果应该为:964176192
问题的解决
下面是Python版本的解答程序
#coding=utf-8
def reverseBit(dat):
res = 0
for i in range(0, 32, 1):
res = res << 1 # 向右移动一位,给下一个数据提供位置
res = res | (dat & 1) # 取出最右边的第1位二进制数字
dat = dat >> 1 # 获取下一个二进制数字
return res
if __name__ == '__main__':
print reverseBit(43261596)
打印输出结果为:
964176192