190. 顛倒二進位制位
阿新 • • 發佈:2018-12-10
題目
程式碼
class Solution { public: uint32_t reverseBits(uint32_t n) { n=(n>>16)|(n<<16); n=((n&0xff00ff00)>>8)|((n&0x00ff00ff)<<8); n=((n&0xf0f0f0f0)>>4)|((n&0x0f0f0f0f)<<4); n=((n&0xcccccccc)>>2)|((n&0x33333333)<<2); n=((n&0xaaaaaaaa)>>1)|((n&0x55555555)<<1); return n; // for 8 bit binary number abcdefgh, the process is as follow: // abcdefgh -> efghabcd -> ghefcdab -> hgfedcba } };
思路
步驟:
1、將n的左邊16位和右邊16位進行交換。
2、將n的左邊16位中的左邊8位和右邊8位交換,右邊16位同理。
3、將......左邊8位中的左邊4位和右邊4位交換....
所以可以基本明白這種交換的方式就是每次先交換一半,然後再交換這兩個一半中的一半,直到交換到1位。