如何计算定点数的范围一种a整数位和小数位?bb

信息处理 固定点
2022-01-25 02:23:09

定点数范围代表什么?为什么我们使用公式,为什么要减去其中是整数位数,是小数位数。2a2b2bab

如果我们有例如,我们是否有可能表示数字,这样就可以表示范围?a=8b=22a+2b

3个回答

假设我们正在处理无符号数字类型。如果您将所有位用于整数部分,则可能的数字集将是: a+b

{0,1,2,3,,2a+b1}.

这些数字可以除以(或乘以)以使用位作为小数部分,从而得到这组可能的数字:2b2bb

{0,1×2b,2×2b,3×2b,,(2a+b1)×2b}={0,2b,2×2b,3×2b,,2a2b__}.

所以你的公式给出了可以表示的最大数字(双下划线)。

该公式也可以理解为或一个最低有效位 (LSB),这是第一个与 0 具有相同截断二进制字符串表示的数字,第一个数字在系统。以类似的方式,在 8 位无符号整数系统中,我们从 256(二进制 1 0000 0000)向后退一步,得到 255(二进制 1111 1111),这是该系统中最大的可表示数字。2b2a

我刚刚发现范围在算术中具有确定的含义:最大值减去最小值。最小值恰好为零,因此在这种情况下,最大值等于范围。

对于无符号定点,位二进制数的表示为Nx

x=12bn=0N12nxn,where xn is the nth bit value of x

为了这N-bit 二进制数,您可以从中获取值02N1因为最小的数是N-位全零(xn=0 n),最大的是N-位全1(xn=1 n)。然后给出最小值和最大值的表示如下:

xmin=12b(10+210++2N10)=12b0=0xmax=12b(11+211++2N11)=12b[1(12N12)]=2N12b=2Nb2b
a=Nb,你得到范围。

您可以阅读Randy Yates 关于定点算术的这篇精彩论文。在那里,您可以找到签名案例范围的推导等等。

该公式表达了我们可以用整数/小数表示的最大和最小数字之间的差异。

考虑一个简单的例子,例如 2.2(在我们的定点表示中有 2 个整数位和 2 个小数位)。

如果我们使用二进制补码(有符号)二进制,我们可以表示的最大正数是:

01.11

这个数字相当于214.

我们可以表示的最大负数是:

10.00

这个数字相当于2.

这里的总范围是从最大的正数到最大的负数,或者2->214. 请注意,这等于:

414, 或者2a2b两者都在哪里ab根据我们的 2.2 表示,等于 2。