LeetCode 190.Reverse Bits (顛倒二進位制位)
阿新 • • 發佈:2018-11-20
顛倒給定的 32 位無符號整數的二進位制位。
示例:
輸入: 43261596 輸出: 964176192 解釋: 43261596 的二進位制表示形式為 00000010100101000001111010011100 , 返回 964176192,其二進位制表示形式為 00111001011110000010100101000000 。
AC C++ Solution:
1.
class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t m=0; for(int i=0;i<32;i++){ m<<=1;//m向左移1位; m = m|(n & 1);//m的末位設定為n的末位 n>>=1;//n向右移1位 } return m; } };
例如:
n: 00000010100101000001111010011100
m: 0 -> 00 -> 001-> ..... -> 00111001011110000010100101000000
2.
class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t m(0); //m所有位初始化為0 for (auto i = 0; i < 32; ++i) { if (n & (1 << i)) { //若n的第i位為1 m |= (1 << (31-i)); //則m的第31-i位為1,否則為初始值0 } } return m; } };