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

32位有符号整型最大值为何为2^31-1而非2^31?

32位有符号整型最大值为2^31-1的原因

疑问背景:32位int的最高位为符号位,剩余31位用于存储数值,经计算31位二进制共可产生231种不同组合,为何32位有符号整型的最大值是231-1,而非2^31?


当前主流编程语言的32位有符号整型均采用补码规则编码,这是取值规则的核心前提:

  • 补码规定最高位为0时表示非负数,最高位为1时表示负数,32位的所有2^32种二进制组合都对应唯一的数值,没有冗余的重复编码。
  • 非负数的编码范围:最高位固定为0,剩余31位可自由组合,总共有2^31种不同取值。这部分编码从000...000(31个0)对应数值0开始,到011...111(31个1)对应数值2^30 + 2^29 + ... + 2^0 = 2^31 -1结束,刚好覆盖从0到2^31-1共2^31个非负数值,没有多余的编码留给更大的正数。
  • 如果你尝试表示2^31,对应的二进制是100...000(31个0),这个编码在补码规则里最高位为1,会被识别为负数,对应数值是-2^31,不属于正整数范围。

你可以用4位有符号整型做简化类比:4位中1位符号位3位数值位,最大正数就是0111对应的7 = 2^3 -1,无法存储正8,1000对应的是-8,逻辑和32位场景完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:27:04