【leetcode】190. 颠倒二进制位( Reverse Bits )


题目描述

【leetcode】190. 颠倒二进制位( Reverse Bits )

颠倒给定的 32 位无符号整数的二进制位。
进阶:
如果多次调用这个函数,你将如何优化你的算法?

在这里插入图片描述

第一次解答

思路:
通过位运算反向输入变量的每一位,将每一位0、1放到新申请一个变量中

test case:
00000010100101000001111010011100
11111111111111111111111111111101

class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
        uint32_t result = 0U;
        for(int i=0; i<32; ++i){
            // 第1版代码:
            // if(n & (1U<<i)){
            //     result |= (1U<<(31-i));
            // }

            // 精简版代码,去掉if:
            result |= (((n>>i)&1U) << (31-i));
        }
        return result;
    }
};

结果:

在这里插入图片描述

相关/参考链接

发布了88 篇原创文章 · 获赞 61 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/a435262767/article/details/104149136
今日推荐