1. 程式人生 > >【演算法】二進位制數的逆序輸出

【演算法】二進位制數的逆序輸出

問題的提出

給定一個無符號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