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

二进制转十进制疑问:1000111是71还是-71?补码求解

二进制数解读:无符号 vs 补码有符号的区别

嘿,这个问题的核心其实在于你是把这些二进制数当作无符号数,还是有符号的补码数来处理——两种场景下的结果完全不同,咱们逐个理清楚:

关于 1000111 的十进制值

  • 无符号二进制场景:直接按位加权计算即可:
    1*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 64 + 4 + 2 + 1 = 71
    这个结果是完全正确的。
  • 有符号补码场景:首先明确这是7位补码(总位数为7)。补码的最高位是符号位:1代表负数,0代表正数。计算负数补码的十进制值时,最高位的权重是 -2^(n-1)(n为总位数),其余位按正常加权:
    -2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = -64 + 7 = -59
    你之前推测的-71是错误的,这里的误区可能是把原码的计算逻辑套到了补码上——原码的负数是符号位加绝对值的二进制,但补码的规则完全不同。

关于 0111001 的十进制值

不管是无符号还是有符号补码场景,结果都是57:

  • 无符号场景:1*2^5 + 1*2^4 + 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 32 + 16 + 8 + 1 = 57
  • 有符号补码场景:最高位是0,说明是正数,而正数的补码和原码完全一致,所以直接计算就是57,不可能是-57——符号位为0永远代表正数。

补充纠正:你提到的补码转换错误

你说1000111的补码是0111001,这其实不对。如果1000111是7位有符号原码(代表-7),那它的补码应该是:先对原码的数值位取反得到1111000,再加1得到1111001;如果1000111本身就是补码,那它的原码才是通过减1取反得到1111001(对应十进制-59)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:09:05