[leetcode] Reverse Bits

来源:互联网 发布:网络播放器怎么安装 编辑:程序博客网 时间:2024/06/03 17:29

From : https://leetcode.com/problems/reverse-bits/

Reverse bits of a given 32 bits unsigned integer.

For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).

Follow up:
If this function is called many times, how would you optimize it?

Related problem: Reverse Integer

class Solution {public:    uint32_t reverseBits(uint32_t n) {        uint32_t s, cur = 1<<31;        while(n) {            s += (n&1)*cur;            cur = cur>>1;            n = n>>1;        }        return s;    }};


class Solution {public:    uint32_t reverseBits(uint32_t n) {        n = ((0xAAAAAAAA&n)>>1)|((0x55555555&n)<<1);        n = ((0xCCCCCCCC&n)>>2)|((0x33333333&n)<<2);        n = ((0xF0F0F0F0&n)>>4)|((0x0F0F0F0F&n)<<4);        n = ((0xFF00FF00&n)>>8)|((0x00FF00FF&n)<<8);        n = ((0xFFFF0000&n)>>16)|((0x0000FFFF&n)<<16);        return n;    }};

0 0
原创粉丝点击