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

2n位定点二进制数的极值与正非零最值技术问询

2n位定点数(n位整数位含符号位 + n位小数位)的最值详解

先明确我们的定点数格式:

  • 总位数:2n位
  • 整数部分:n位,其中1位符号位,剩下n-1位是整数数值位
  • 小数部分:n位,全部是小数数值位(无符号位,符号由整数部分的符号位统一控制)

下面分情况逐一分析,重点帮你把小数部分的逻辑理清楚:

一、最大正非零数

要得到最大的正数,得让整数和小数部分都取最大可能值:

  • 整数部分:符号位为0(表示正数),剩下n-1位整数数值位全为1,对应的整数数值是 2^(n-1) - 1(比如n=2时,整数位是01,对应数值1=2^(1)-1)
  • 小数部分:n位全为1,对应的小数数值是 1 - 2^(-n)(这是等比数列求和的结果:第1位小数权重2-1,第2位2-2...第n位2^-n,总和为 (1/2)*(1 - (1/2)^n)/(1 - 1/2) = 1 - 2^(-n),比如n=2时,0.11=0.5+0.25=0.75=1-2^(-2))

把两部分加起来,最大正非零数就是:
(2^(n-1) - 1) + (1 - 2^(-n)) = 2^(n-1) - 2^(-n)

举个例子:n=3(总位数6位),最大正非零数是 2^(2)-2^(-3)=4-0.125=3.875,对应二进制是 011.111,完全符合预期。

二、最小正非零数

要得到最小的正非零数,得让数值尽可能小且为正:

  • 整数部分:符号位0,整数数值位全为0(整数部分为0)
  • 小数部分:只有最右侧(最低位)的1位为1,其余全为0,对应的小数数值是 2^(-n)(比如n=2时,0.01=0.25=2^(-2))

所以最小正非零数就是 2^(-n),对应的二进制是 00...0.00...01(整数部分n位是前n-1个0+符号位0,小数部分是前n-1个0+最后1个1)

三、整体最大值(即最大正非零数)

因为正数的最大值就是整个定点数能表示的最大数,所以整体最大值和上面的最大正非零数一致:2^(n-1) - 2^(-n)

四、整体最小值(最小的负数)

要得到最负的数,得让整数和小数部分的绝对值都取最大,符号位为1(表示负数):

  • 整数部分:符号位1,整数数值位全为1,对应的整数绝对值是 2^(n-1)-1
  • 小数部分:全为1,对应的小数绝对值是 1 - 2^(-n)

整体最小值就是 - (2^(n-1) - 2^(-n)),对应的二进制是 11...1.11...1(整数部分符号位1+数值位全1,小数部分全1)

补充:小数部分权重的快速理解

很多人对小数部分计算容易懵,其实逻辑和整数部分类似,只是权重是2的负次方:

  • 整数部分从右到左(最低位到最高位)权重是20,21,...,2^(n-2)(因为符号位占了1位,数值位是n-1位)
  • 小数部分从左到右(最高位到最低位)权重是2(-1),2(-2),...,2^(-n)

记住这个权重对应关系,不管是计算单个小数位的数值,还是求和都很容易上手~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:45:40