【演算法】二進位制數的逆序輸出
阿新 • • 發佈:2018-12-30
問題的提出
給定一個無符號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