主要内容

网络中的定点运算状态流图表

定点数字使用整数和整数算法来近似实数。它们使您能够执行涉及实数的计算,而不需要底层系统硬件中的浮点支持。有关详细信息,请参阅金宝app状态流程图中的定点数据

定点数据的算术运算

定点操作数之间的二进制算术运算的一般公式为

c=aB
哪里A.B是定点数字和指加法、减法、乘法或除法。运算的结果是一个定点数C形式

vCsCQC+BC

的定点类型C确定坡度sC偏见BC,以及用于存储量化整数的位数QC.对于每个算术运算,此表列出量化整数的值QC根据操作数的值(A.B)和的定点类型C

操作 斜率和偏差标度 二进制点标度

附加

c=a+b QC=圆形((sA./sC)QA.+ (sB/sC)QB+ (BA.+BBBC)/sC) QC=圆形((sA./sC)QA.+ (sB/sC)QB)

扣除

c=a-b QC=圆形((sA./sC)QA.- (sB/sC)QB- (BA.BBBC)/sC) QC=圆形((sA./sC)QA.- (sB/sC)QB)

乘法

c=a*b QC=圆形((sA.sB/sC)QA.QB+ (BA.sB/sC)QA.+ (BBsA./sC)QB+ (BA.BBBC)/sC) QC=圆形((sA.sB/sC)QA.QB)

分开

c=a/b QC=圆形((sA.QA.+BA.)/(sC(sBQB+BB)) – (BC/sC)) QC=圆形((sA./(sBsC))QA./QB)

为了简化这些表达式并避免昂贵的计算操作,可以使用二进制点缩放来编码所有定点数据。在此设置下,斜率为2的整数次幂,偏差为零。然后,所有定点运算包括整数算术和对量化整数的位移位。

笔记

算术运算的结果取决于计算量化整数值的舍入方法QC。有关详细信息,请参阅转换操作

定点数据的关系操作

您可以使用关系运算来比较定点数据。比较不同类型的定点值可能会产生意外结果,因为每个操作数都转换为通用类型进行比较。由于转换过程中出现舍入或溢出错误,某些看似相等的值作为定点数并不相等。

例如,假设A.B代表真实世界的价值v= 2.2在两种不同的定点编码方案中:

  • A.是一个带斜率的定点数sA.= 0.3和偏见BA.= 0.1.的量化整数A.是:

    QA.= (vBA.)/sA.=(2.2 - 0.1)/0.3 = 7。

  • B是一个带斜率的定点数sB= 0.7和偏见BB= 0.1.的量化整数B是:

    QB= (vBB)/sB= (2.2 – 0.1)/0.7 = 3.

要比较这些值,图表首先将它们转换为具有坡度的公共定点类型s电脑及相关知识= 1.06811 · 10–5sA./28087 ≈sB· 2–16和偏见B电脑及相关知识= 0.1(在本例中,坡度s电脑及相关知识产生于的近似值sA./sB= 0.3/0.7 ≈ 28087 · 2–16.)在这种通用编码方案中,A.B对应于这些量化的整数:

Q一个“=sA.QA./s电脑及相关知识=QA.(sA./s电脑及相关知识) ≈ 7.⨉ 28087 = 196609

Qb'=sBQB/s电脑及相关知识=QB(sB/s电脑及相关知识) ≈ 3.⨉ 2.16= 196608.

在转换之后,量化的整数是不同的A.B表示相同的实际值,但它们与定点数不同。

笔记

在使用C作为操作语言的图表中,不支持比较具有不匹配偏差的定点操作数。金宝app

定点数据的逻辑运算

在逻辑运算中,定点操作数A.被解释为错误的如果它对应于固定点类型中零的实际值A.否则A.被解释为符合事实的

  • 在使用MATLAB的图表中®作为动作语言,使用A.在一个逻辑运算中等价于表达式a~=cast(0,'like',a)

  • 在使用C作为操作语言的图表中,使用A.在一个逻辑运算中等价于表达式一个! c = 0,在那里0c是定点上下文敏感常量。请参阅定点上下文敏感常量

例如,假设A.是斜率为的定点数吗sA.= 0.25还有一种偏见BA.= 5.1. 使用A.在一个逻辑运算中,等价于测试是否量化了整数QA.满足条件

QA.=圆形((0-BA.)/sA.)=圆形(–5.1/0.25)=圆形(–20.4)=–20。

因此,A.相当于错误的当现实世界的近似是

vA.sA.QA.+BA.= 0.25⨉(-20)+ 5.1 = 0.1。

定点操作晋级规则

选择用于定点数字操作结果的数字类型的规则被调用定点推广规则.这些规则有助于保持计算效率和可用性。

定点提升规则确定操作的结果类型c=aB通过选择坡度sC偏见BC,以及位数WC用于存储量化的整数QC。这些参数取决于操作数的定点类型A.B,手术以及图表的操作语言属性。

  • 在使用MATLAB作为操作语言的图表中,可以通过图表的定点属性控制定点升级规则。请参阅不动点性质

    • 如果你设定MATLAB图表菲马斯财产与MATLAB相同,然后算术运算遵循MATLAB的默认定点提升规则。请参阅执行定点运算(定点设计师)

    • 如果指定一个图表菲马斯反对总和产品模式着手特定精度,然后您可以明确定义所有和和和乘积的字长、斜率和偏差。看见下载188bet金宝搏fimath对象属性(定点设计师)

  • 在使用C作为操作语言的图表中,定点提升规则确定结果的中间值的类型。然后将这个中间值转换为您指定的类型C

    对于所有算术运算,默认的位数WC用于存储量化整数的是以下值之间的较大值:

    • 操作数类型中的最大位数(WA.WB).

    • 目标机器整数字大小中的位数(Wint).

    设置的值Wint,打开模型配置参数对话框。在硬件实现窗格中,选择定制处理器设备供应商下拉列表,然后在int字段。有关更多信息,请参见硬件实现面板(金宝appSimulink)

    通过使用窗体的特殊赋值操作,可以避免溢出并提高浮点操作的精度c:=aB。特殊分配操作不遵循定点升级规则。相反,图表使用您为其指定的类型来确定操作的结果C.看到覆盖C图表中的定点提升

加法和减法

默认情况下,使用MATLAB作为操作语言的图表仅支持对通过二进制点缩放定义的定点数据进行加减运算。如果任一操作数是有金宝app符号的定点数,则结果也是有符号的。字长的选择除了可能的进位外,还包括每个操作数的整数和小数部分。结果的分数长度等于最精确操作数的分数长度。要对通过使用不是2的整数幂的斜率或非零偏差定义的定点数据执行加减运算,请指定图表菲马斯反对总和着手特定精度

使用C作为操作语言的图表支持对所有定点数据类型的操作数进行加减运算。仅当两个操作数金宝app都有符号时,结果才是有符号定点数。混合有符号和无符号操作数可能会产生意外结果,不推荐使用。结果的斜率等于最小精度的斜率操作数。为了简化计算并生成高效代码,两个输入的偏差在加法运算中相加,在减法运算中相减。

A. B 作为行动语言的MATLAB C作为动作语言
签名 sA. sB sC=sA.||sB sC=sA.&&sB
字长 WA. WB WC= max (WA.FA.,WBFB)+最大值(FA.,FB) + 1 WC= max (WA.,WB,Wint)
部分长度 FA. FB FC= max (FA.,FB) FC=分钟(FA.,FB)
斜坡 sA.(2-FA.如果使用二进制点缩放) sB(2-FB如果使用二进制点缩放) sC=分钟(sA.,sB) sC= max (sA.,sB)
偏见 BA.(如果使用二进制点缩放,则为0) BB(如果使用二进制点缩放,则为0) BC= 0 BC=BA.+BB添加或BC=BA.BB减法

乘法

默认情况下,使用MATLAB作为操作语言的图表只支持通过二进制点缩放定义的定点数据的乘法。金宝app如果任一操作数是有符号的定点数,则结果也是有符号的。全精度乘积要求字长等于操作数的字长之和。乘积的分数长度是操作数的分数长度之和。若要使用非2的整数次幂或非零偏差定义的斜率对定点数据执行乘法,请指定图表菲马斯反对产品模式着手特定精度

使用C作为操作语言的图表只支持非零偏差定义的定点数据操作数的乘法运算。金宝app结果是一个有符号的定点数,只有当两个操作数都是有符号的。混合有符号和无符号操作数可能会产生意想不到的结果,因此不建议使用。乘积的斜率是操作数的斜率的乘积。

A. B 作为行动语言的MATLAB C作为动作语言
签名 sA. sB sC=sA.||sB sC=sA.&&sB
字长 WA. WB WC=WA.+WB WC= max (WA.,WB,Wint)
部分长度 FA. FB FC=FA.+FB FC=FA.+FB
斜坡 sA.(2-FA.如果使用二进制点缩放) sB(2-FB如果使用二进制点缩放) sC=sA.sB sC=sA.sB
偏见 BA.= 0 BB= 0 BC= 0 BC= 0

分开

使用MATLAB作为操作语言的图表仅支持对通过二进制点缩放定义的定点数据进行除法。如果任一操金宝app作数是有符号的定点数,则结果也是有符号的。全精度商要求字长等于操作数中的最大位数。商的分数长度为操作数的分数长度之差。

使用C作为操作语言的图表支持对非零偏差定义的定点数据操作数进行除法。仅当两个操作数金宝app都有符号时,结果才是有符号定点数。混合有符号和无符号操作数可能会产生意外结果,不建议使用。商的斜率是操作数斜率的商.

A. B 作为行动语言的MATLAB C作为动作语言
签名 sA. sB sC=sA.||sB sC=sA.&&sB
字长 WA. WB WC= max (WA.,WB) WC= max (WA.,WB,Wint)
部分长度 FA. FB FC=FA.FB FC=FA.FB
斜坡 sA.(2-FA.如果使用二进制点缩放) sB(2-FB如果使用二进制点缩放) sC=sA./sB sC=sA./sB
偏见 BA.= 0 BB= 0 BC= 0 BC= 0

一元负号

唯一需要提升其结果类型的一元运算是一元减运算c=-a.取无符号定点数字的负数可能会产生意想不到的结果,因此不推荐使用。结果的单词大小取决于图表的动作语言属性。结果的斜率等于操作数的斜率。结果类型的偏移量是操作数偏移量的负数。

A. 作为行动语言的MATLAB C作为动作语言
签名 sA. sC=sA. sC=sA.
字长 WA. WC=WA. WC= max (WA.,Wint)
部分长度 FA. FC=FA. FC=FA.
斜坡 sA.(2-FA.如果使用二进制点缩放) sC=sA. sC=sA.
偏见 BA.(如果使用二进制点缩放,则为0) BC= –BA. BC= –BA.

混合数值类型的算术

该表总结了定点数和不同数字类型的操作数之间的二进制运算的定点提升规则。

第二个操作数的数字类型 作为行动语言的MATLAB C作为动作语言

浮点数:

  • 仅有一个的

在执行该操作之前,图表将浮点操作数强制转换为定点数。强制转换使用的类型取决于该操作:

  • 加减运算使用与定点操作数相同的类型。

  • 乘法运算使用与定点操作数相同的字长和符号,以及定点结果的最佳精度分数长度。

操作的结果是一个定点数字。

在执行该操作之前,图表将定点操作数转换为浮点数。强制转换操作使用相同的类型(仅有一个的)作为浮点操作数。操作的结果是一个浮点数。

整数:

  • int64

  • int32

  • int16

  • int8

  • uint64

  • uint32

  • uint16

  • uint8

整数操作数被视为具有相同字长和有符号斜率的定点数s= 1和偏见B= 0。操作的结果是一个定点编号。

整数操作数被视为具有相同字长和有符号斜率的定点数s= 1和偏见B= 0。操作的结果是一个定点编号。

相关话题