190. 颠倒二进制位
题目
- 颠倒给定的 32 位无符号整数的二进制位。
示例 1:
输入:n = 00000010100101000001111010011100
输出:964176192 (00111001011110000010100101000000)
解释:输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。
示例 2:
输入:n = 11111111111111111111111111111101
输出:3221225471 (10111111111111111111111111111111)
解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
因此返回 3221225471 其二进制表示形式为 10111111111111111111111111111111 。
法一、字符串
- 思路:无符号整数的二进制位-->二进制字符串-->字符串翻转-->转换成整数
class Solution:
def reverseBits(self, n: int) -> int:
n=bin(n)[2:].zfill(32) #二进制转字符串,并补齐32位,不补齐反转后直接异位,得不到想要的结果
n=n[::-1] #字符串翻转
return int(n,2) #二进制换整数,第二个参数2表示当前数字为二进制
法二、循环
- 把n从右边一个一个取下来放到res的右边
- 代码中和自己理解的左右刚好相反,没有理解
class Solution:
def reverseBits(self, n):
res = 0
for i in range(32):
res = (res << 1) | (n & 1) #1&1结果为1;1&0的结果为0;|有1就为1
n >>= 1 #n右移
return res
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人