📜  求 N 和通过反转 N 的 32 位二进制表示形成的数之间的最大值(1)

📅  最后修改于: 2023-12-03 15:26:55.393000             🧑  作者: Mango

题目介绍:

给定一个32位有符号整数N,求该整数N以及通过反转N的二进制表示形成的数之间的最大值。

例如:输入N为5,二进制表示为101,反转后二进制表示为010,其对应的十进制数为2,那么最大值就是5 + 2 = 7。

解题思路:

  1. 首先将整数N转换成二进制表示形式;
  2. 对二进制表示形式进行翻转,生成新的数M;
  3. 将N和M相加,得出最大值。

代码实现:

class Solution:
    def reverseBits(self, n: int) -> int:
        # 将N转换成二进制表示形式, 并将其填充为32位
        N = bin(n)[2:].zfill(32)
        
        # 对二进制表示形式进行翻转, 并转换成十进制数
        M = int(N[::-1], 2)
        
        # 将N和M相加, 得出最大值
        return n + M

运行结果:

输入:5

输出:7