【leetcode】Reverse Bits(middle)
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).
思路:
n一直右移, ans一直左移。
class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t ans = 0; for(int i = 0; i < 32; i++) { if(n & 0x0001 == 1) { n = n >> 1; ans = ans << 1; ans |= 0x0001; } else { n = n >> 1; ans = ans << 1; } } return ans; } };
大神总会有更简单的写法:
uint32_t reverseBits(uint32_t n) { uint32_t result= 0; for(int i=0; i<32; i++) result = (result<<1) + (n>>i &1); return result; }