• 【LeetCode】190. Reverse Bits


    题目:

    颠倒给定的 32 位无符号整数的二进制位。

    示例 1:

    输入: 00000010100101000001111010011100
    输出: 00111001011110000010100101000000
    解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596      因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000

    示例 2:

    输入:11111111111111111111111111111101
    输出:10111111111111111111111111111111
    解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
          因此返回 3221225471 其二进制表示形式为 10101111110010110010011101101001。

    思路:

    跟上篇文章一样

    #include <stdio.h>
    #include <stdint.h>
    #include <inttypes.h>
    
    uint32_t reverseBits(uint32_t n) {
        uint32_t m_1 = 0x55555555;
        uint32_t m_2 = 0x33333333;
        uint32_t m_4 = 0x0f0f0f0f;
        uint32_t m_8 = 0x00ff00ff;
        uint32_t m_16 = 0x0000ffff;
    
        uint32_t a = ((n & m_16) << 16) + ((n >> 16) & m_16);
        uint32_t b = ((a & m_8) << 8) + ((a >> 8) & m_8);
        uint32_t c = ((b & m_4) << 4) + ((b >> 4) & m_4);
        uint32_t d = ((c & m_2) << 2) + ((c >> 2) & m_2);
        uint32_t e = ((d & m_1) << 1) + ((d >> 1) & m_1);
    
        return e;
    }
    
    int main()
    {
        uint32_t n = 00000000000000000000000000001011;
        uint32_t a1 = reverseBits(n);
        uint32_t a2 = reverseBits(a1);
        printf("%" PRIu32 "
    ",a1);
        printf("%" PRIu32 "
    ",a2);
        return 0;
    }

    结果:


    参考:一起玩算法05

    推荐一位干货up主:正月点灯笼

  • 相关阅读:
    设计模式 单件-Singleton
    积累PDU
    设计模式 工厂-Factory
    设计模式 策略-Strategy,装饰-Decorator,观察者-Observer
    Java多线程编程
    Red Hat Linux认证
    认识Agile,Scrum和DevOps
    FPDF中文应用攻略
    ERROR 1010 (HY000): Error dropping database (can't rmdir '.kehuanedu_db', errno: 41)
    xampp修改mysql的默认空密码
  • 原文地址:https://www.cnblogs.com/ME-WE/p/12433594.html
Copyright © 2020-2023  润新知