[LeetCode] 顛倒二進位制位
阿新 • • 發佈:2019-01-07
顛倒給定的 32 位無符號整數的二進位制位。
示例:
輸入: 43261596 輸出: 964176192 解釋: 43261596 的二進位制表示形式為 00000010100101000001111010011100 , 返回 964176192,其二進位制表示形式為 00111001011110000010100101000000 。
進階:
如果多次呼叫這個函式,你將如何優化你的演算法?
class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t res= 0; for(int i=0;i<32;i++) { if(n & 1 == 1) res = (res<<1)+1; else res = res<<1; n = n >> 1; } return res; } };
class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t res = 0; int i = 0; while(i<32) { uint32_t temp = n & 0x01; res = (res<<1) | temp; i++; n = n>>1; } return res; } };