Reverse Bits (LeetCode)
Question:
https://leetcode.com/problems/reverse-bits/
解答:
没什么特别的方法,就是源int值最右边的bit作为结果int的最左边bit,右移左移32次。
如果要调用很多次,可以预先对每个bit的值做mapping,比如0x0001对应0x7000,如果n&bit[i],则结果加上bitMap[i] (但是不觉得能优化多少)。
class Solution { public: uint32_t reverseBits(uint32_t n) { uint32_t ret; for (int i = 0; i < 32; i++) { ret <<= 1; ret += n&0x01; n >>= 1; } return ret; } };
浙公网安备 33010602011771号