You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现32位有符号整数反转输入1结果不符该如何修改

问题原因

Python 的整数类型默认无长度限制,int(result, 2) 会将32位二进制串按无符号整数解析,当反转后的32位二进制最高位为1时,你得到的是正整数2147483648,而非32位有符号补码规则下对应的负数值-2147483648。

需修改的内容

你需要新增32位补码转有符号整数的判断逻辑,修改后的完整代码如下:

input1=int(input("Enter the number: "))
binary=bin(input1).replace('0b','')
result=binary.zfill(32)
num=list(result)
num=num[::-1]
result=''.join(num)
ans=int(result,2)
# 新增32位有符号数转换逻辑
if ans >= 2 ** 31:
    ans -= 2 ** 32
print(ans)
修改点说明
  • 32位有符号整数的合法取值范围是 [-2^31, 2^31 - 1],当int(result, 2) 得到的结果大于等于2^31时,说明当前32位二进制的最高位为1,属于负数的补码表示,减去2^32即可得到对应的有符号负数值。
  • 输入1的场景下,初始解析得到的ans为2147483648,减去4294967296(即2^32)后正好得到预期的-2147483648。
  • 原有正常用例不受影响:输入2时反转后的数值小于2^31,不会触发修正逻辑,输出保持原有正确结果。

内容的提问来源于stack exchange,提问作者ExploreWorld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:45:02