zoukankan      html  css  js  c++  java
  • 190. 颠倒二进制位

    题目

    代码

    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位。

    https://github.com/li-zheng-hao
  • 相关阅读:
    js内置date类
    获取下拉列表的value
    表单的隐藏与显示
    JavaScript
    CSS的相关属性
    CSS
    基于akka-http搭建restfull框架
    Netsharp配置文件
    nginx配置备忘
    docker安装radis
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053613.html
Copyright © 2011-2022 走看看