Main Content

范围和精度

数字的范围给出了表示的范围,精度则给出了表示中连续数字之间的距离。定点数的范围和精度取决于字长和定标。

注意

您必须注意您选择的定点数据类型和定标的精度和范围,以了解是否调用舍入方法或是否发生上溢或下溢。

范围

范围是定点数据类型和定标可以表示的数字范围。范围是有限制的,因为定点字的大小有限制。

下图说明了字长值为 wl、定标值为 S 和偏置值为 B 的 2 的补码定点数的可表示范围,其中 wlSB 的值允许负数和正数。

对于任何数据类型的有符号和无符号定点数,不同位模式的数量都为 2wl

例如,采用 2 的补码方法时,需要表示负数和零,因此最大值为 2wl -1 – 1。由于零只有一种表示,因此正数和负数的数量不相等。这意味着存在一个 2wl1 的表示,但没有 2wl1 的表示:

范围限制

由于定点数据类型表示有限范围内的数字,因此如果运算结果大于或小于该范围内的数字,则可能发生上溢和下溢。

在二进制算术中,处理器可能需要接受一个 n 位定点数,并将其存储在 m 个位中,其中 mn。如果 m < n,则说明该数字的范围缩小了,运算可能会产生溢出情况。一些处理器将这种情况识别为 InfNaN。对于其他处理器,尤其是数字信号处理器 (DSP),会对值进行饱和绕回处理。

Fixed-Point Designer™ 软件允许您对溢出进行饱和绕回处理。饱和将正溢出表示为正在使用的范围中的最大正数,将负溢出表示为正在使用的范围中的最大负数。绕回使用模算术将溢出转换回数据类型的可表示范围。

创建 fi 对象时,任何溢出都会经过饱和处理。默认 fimath 的 OverflowAction 属性为 saturate。您可以通过将 fipref 对象的 LoggingMode 属性设置为 on 来记录上溢和下溢。

如果 m > n,则说明该数的范围扩大了。扩展字的范围需要包含保护位,用于防止潜在的溢出。

Simulink® 软件支持所有定点数据类型的饱和与绕回,而保护位仅支持小数数据类型。

精度

定点数的精度是其数据类型和定标可表示的连续值之间的差值。最低有效位的值(因此也是数字的精度)由小数位数决定。定点值的误差小于等于其数据类型和定标所确定精度的一半。

例如,二进制小数点右侧具有四位的定点表示的精度为 2-4(即 0.0625),这是其最低有效位的值。此数据类型和定标范围内的任何数字的误差都小于等于 (2-4)/2(即 0.03125),即精度的一半。这是以有限精度表示数字的示例。

精度限制

定点字的精度取决于字长和二进制小数点位置。例如,假设您必须用定点数来表示真实数字 35.375。使用斜率偏置编码方案,其表示为

VV˜=SQ+B=22Q+32,

其中 V = 35.375.

最接近真实值的两个逼近是 Q = 13Q = 14

V˜=22(13)+32=35.25,V˜=22(14)+32=35.50.

在任一情况下,绝对误差都是相同的:

|V˜V|=0.125=S2=F2E2.

对于有限范围内的定点值,如果使用舍入到最邻近的值,这表示最差情形误差。如果使用其他舍入模式,最差情形误差可能是原来的两倍:

|V˜V|<F2E.

扩展字的精度可以用更多位来完成,但这种方法面临着实际的限制。更好的做法是,您必须仔细选择数据类型、字长和定标,以便准确地表示数字。在处理器上,一般使用舍入和尾随零填充来处理二进制字的精度。

定点数据类型参数

下表给出了 二进制小数点定标 中讨论的受支持的定点数据类型的下限、上限和默认纯二进制小数点定标。

定点数据类型范围和默认定标

名称

数据类型

下限

上限

默认定标(~精度)

无符号整数

fixdt(0,ws,0)

0

2ws1

1

有符号整数

fixdt(1,ws,0)

2ws1

2ws11

1

无符号二进制小数点

fixdt(0,ws,fl)

0

(2ws1)2fl

2fl

有符号二进制小数点

fixdt(1,ws,fl)

2ws1fl

(2ws11)2fl

2fl

无符号斜率偏置

fixdt(0,ws,s,b)

b

s(2ws1)+b

s

有符号斜率偏置

fixdt(1,ws,s,b)

s(2ws1)+b

s(2ws11)+b

s

s = 斜率,b = 偏置,ws = 字长,fl = 小数长度

8 位定点数据类型的范围和精度 - 纯二进制小数点定标

下表列出了使用纯二进制小数点定标的 8 位广义定点数据类型的精度、有符号值的范围和无符号值的范围。请注意,第一个定标值 (21) 表示不与字紧连的二进制小数点。

定标

精度

有符号值的范围(下限、上限)

无符号值的范围(下限、上限)

21

2.0

-256, 254

0, 510

20

1.0

-128, 127

0, 255

2-1

0.5

-64, 63.5

0, 127.5

2-2

0.25

-32, 31.75

0, 63.75

2-3

0.125

-16, 15.875

0, 31.875

2-4

0.0625

-8, 7.9375

0, 15.9375

2-5

0.03125

-4, 3.96875

0, 7.96875

2-6

0.015625

-2, 1.984375

0, 3.984375

2-7

0.0078125

-1, 0.9921875

0, 1.9921875

2-8

0.00390625

-0.5, 0.49609375

0, 0.99609375

8 位定点数据类型的范围和精度 - 斜率和偏置定标

下表列出了使用斜率与偏置定标的 8 位定点数据类型的精度、有符号值的范围和无符号值的范围。斜率从值 1.25 开始,所有斜率的偏置均为 1.0。请注意,斜率与精度相同。

偏置

斜率/精度

有符号值的范围(下限、上限)

无符号值的范围(下限、上限)

1

1.25

-159, 159.75

1, 319.75

1

0.625

-79, 80.375

1, 160.375

1

0.3125

-39, 40.6875

1, 80.6875

1

0.15625

-19, 20.84375

1, 40.84375

1

0.078125

-9, 10.921875

1, 20.921875

1

0.0390625

-4, 5.9609375

1, 10.9609375

1

0.01953125

-1.5, 3.48046875

1, 5.98046875

1

0.009765625

-0.25, 2.240234375

1, 3.490234375

1

0.0048828125

0.375, 1.6201171875

1, 2.2451171875

相关主题