一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

浮点转定点装置、方法、电子设备及存储介质与流程

2021-11-10 04:16:00 来源:中国专利 TAG:


1.本技术属于计算机技术领域,尤其涉及一种浮点转定点装置、方法、电子设备及存储介质。


背景技术:

2.目前,浮点数由于能够以相对较少的位来灵活表示较大范围的值,因此被广泛应用。在浮点数应用过程中,常常存在着将浮点数转换为定点数的需求。然而,由于将浮点数转换为定点数的过程需要通过移位寄存器进行复杂的移位运算,因此导致现有的浮点转定点的效率较低。


技术实现要素:

3.有鉴于此,本技术实施例提供了浮点转定点装置、方法、电子设备及存储介质,以解决现有技术中如何高效地将浮点数据转换为定点数据的问题。
4.本技术实施例提供了一种浮点转定点装置,包括:
5.预处理模块,用于获取浮点数据进行预处理,得到所述浮点数据对应的指数数据和尾数数据;
6.选择模块,用于根据所述指数数据和所述尾数数据,通过位选择操作生成所述尾数数据对应的目标移位数据;所述位选择操作包括根据所述指数数据,选择所述尾数数据的指定数据位的数据并对剩余的数据位进行数据填充的操作;
7.定点数据确定模块,用于根据所述目标移位数据,生成所述浮点数据对应的目标定点数据。
8.本技术实施例的第二方面提供了一种浮点转定点方法,包括:
9.获取浮点数据进行预处理,得到所述浮点数据对应的指数数据和尾数数据;
10.根据所述指数数据和所述尾数数据,通过位选择操作生成所述尾数数据对应的目标移位数据;所述位选择操作包括根据所述指数数据,选择所述尾数数据的指定数据位的数据并对剩余的数据位进行数据填充的操作;
11.根据所述目标移位数据,生成所述浮点数据对应的目标定点数据。
12.本技术实施例的第三方面提供了一种电子设备,该电子设备包括如第一方面所述的浮点转定点装置。
13.本技术实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,使得电子设备实现如所述第二方面所述的浮点转定点方法的步骤。
14.本技术实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行如第二方面中所述的浮点转定点方法。
15.本技术实施例与现有技术相比存在的有益效果是:本技术实施例中,通过预处理模块获取浮点数据进行处理,得到浮点数据对应的指数数据和尾数数据;以及,通过选择模
块,根据该指数数据和尾数数据,通过位选择操作生成尾数数据对应的目标移位数据;之后,通过定点数据确定模块,根据该目标移位数据,生成该浮点数据对应的目标定点数据。由于在浮点转定点过程中,只需根据指数数据和尾数数据,通过选择模块进行位选择操作,即可生成尾数数据对应的目标移位数据,即,能够通过选择模块实现简单的位选择操作来代替移位寄存器复杂的移位处理,因此能够节省运算资源,提高浮点数据转换为定点数据时的硬件处理效率,准确高效地将浮点数据转换为定点数据。
附图说明
16.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1是本技术实施例提供的第一种浮点数据的示意图;
18.图2是本技术实施例提供的第二种浮点数据的示意图;
19.图3是本技术实施例提供的第一种浮点转定点装置的示意图;
20.图4是本技术实施例提供的第二种浮点转定点装置的示意图;
21.图5是本技术实施例提供的一种浮点转定点方法的流程示意图;
22.图6是本技术实施例提供的电子设备的示意图。
具体实施方式
23.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
24.为了说明本技术所述的技术方案,下面通过具体实施例来进行说明。
25.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
26.还应当理解,在此本技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本技术。如在本技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
27.还应当进一步理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
28.如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0029]
另外,在本技术的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0030]
目前,浮点数由于能够以相对较少的位来灵活表示较大范围的值,因此被广泛应用。在浮点数应用过程中,常常存在着将浮点数转换为定点数的需求。然而,由于将浮点数转换为定点数的过程需要通过移位寄存器进行复杂的移位运算,因此导致现有的浮点转定点的效率较低。
[0031]
为了解决上述的技术问题,本技术实施例提供了一种浮点转定点装置、方法、电子设备及存储介质,通过预处理模块获取浮点数据进行处理,得到浮点数据对应的指数数据和尾数数据;以及,通过选择模块,根据该指数数据和尾数数据,通过位选择操作生成尾数数据对应的目标移位数据;之后,通过定点数据确定模块,根据该目标移位数据,生成该浮点数据对应的目标定点数据。由于在浮点转定点过程中,只需根据指数数据和尾数数据,通过选择模块进行位选择操作,即可生成尾数数据对应的目标移位数据,即,能够通过简单的位选择操作来代替移位寄存器复杂的移位处理,因此能够高效准确地生成目标定点数据,提高浮点数据转换为定点数据的效率。
[0032]
为了便于理解,首先本技术实施例的一些相关概念进行以下解释:
[0033]
(一)浮点数据,是指浮点数对应的数据,具体可以为浮点数的标准格式数据。其中,浮点数指的是小数点的位置不固定的数据,其可以灵活地表示较大范围的数值。通常浮点数的标准格式数据可以由如图1所示,包括符号位(sign)、指数数据段(exponent)和小数数据段(fraction)。此时,浮点数的实际值(value)即等于符号位乘以指数数据段的值再乘以小数数据段的值:
[0034]
value=sign
×
exponent
×
fraction
[0035]
其中,
“×”
表示乘号。
[0036]
具体地,上述的浮点数据可以为符合ieee二进制浮点数算术标准的数据,其从逻辑上采用一个三元组{s,e,m}来表示一个数n,它规定基数为2,符号位s用0和1分别表示正和负,尾数m用原码表示,阶码e用移码表示。根据浮点数的规格化方法,尾数域的最高有效位总是1,由此,该标准约定这一位不予存储,而是认为隐藏在小数点的左边,因此,尾数域所表示的值是1.m(实际存储的是m),这样可使尾数的表示范围比实际存储多一位。为了表示指数的正负,阶码e通常采用移码方式来表示,将数据的指数e加上一个固定的偏移量后作为该数的阶码,这样做既可避免出现正负指数,又可保持数据的原有大小顺序,便于进行比较操作。
[0037]
示例性地,图2示出了ieee754标准下的半精度浮点数据示意图。该半精度浮点数据的最左边一位(即最高位)为符号位(sign),接着为位宽为5比特(bit)的指数数据段exponent(也称为阶码e),最右边为位宽为10比特的小数数据段fraction(也称为尾数m)。具体地:
[0038]
对于符号位sign,当其值为0时,表示该浮点数为正;值为1时,表示该浮点数为负。
[0039]
对于尾数m,其除了图中示出的10比特长的数据外,还包含未示出的隐含位1。对于该10bit的数据,可以理解为半精度浮点数小数点后的数。
[0040]
对于指数数据段exponent,包含以下几种情况:
[0041]
当指数位全为0,尾数位也全为0的时,该浮点数表示的就是0;
[0042]
当指数位全为0,尾数位不全为0时,表示为非规格化浮点数(subnormal value),是一个非常小的数;
[0043]
当指数位全为1,尾数位全为0时,表示的是无穷大,此时如果符号位为0,表示正无穷( ∞);如果符号位为1,表示负无穷(

∞);
[0044]
当指数位全为1,尾数位不全为0时,表示的不是一个数(用nan表示);
[0045]
其余情况下,指数位的值减去15(2的五次方减1,即以进制数2为底,以指数位的位数5为幂求得的值减去1)就是其表示的实际指数值,例如11110表示的就是30

15=15。
[0046]
综上,对于一个半精度浮点数(其符号位、指数数据段、小数数据段对应的值分别简写为s、e、m)的值value,计算方式为:
[0047]
value=(

1)
s
×2e

15
×
1.m
[0048]
(二)定点数据,是指定点数对应的数据,定点数为小数点固定不变的数,可以包括定点整数和定点小数。其中定点整数是指小数点固定在最后一位的定点数,也称为纯整数;定点小数是指小数点固定在最高位之后的定点数,也称为纯小数。
[0049]
示例性地,上述的定点数据可以为在计算机中以二进制形式表示一个纯整数的整型数据,例如16位的整型数据。
[0050]
实施例一:
[0051]
图3示出了本技术实施例提供的第一种浮点转定点装置的结构示意图,该浮点转定点装置包括预处理模块、选择模块和定点数据确定模块,这三个模块依次电性连接,其中:
[0052]
预处理模块31,用于获取浮点数据进行预处理,得到浮点数据对应的指数数据和尾数数据。
[0053]
本技术实施例中,预处理模块获取输入的浮点数据,并对该浮点数据进行数据解析、转码等预处理,从而得到该浮点数据对应的指数数据和尾数数据。该指数数据为能够准确地表示浮点数对应的指数值的数据;该尾数数据为能够准确地表述浮点数对应的有效数据值的数据。
[0054]
在一个实施例中,该预处理模块为专门为特定标准格式(例如ieee754半精度浮点数据)的浮点数据定制的模块,则该预处理模块直接根据唯一的数据解析规则和转码规则对输入的浮点数据进行预处理,得到该浮点数据对应的指数数据和尾数数据。在另一个实施例中,该预处理模块为能够对多种不同标准格式的浮点数据进行预处理的模块,则该预处理模块在获取到浮点数据的同时,获取该浮点数据的标准格式类型信息,之后,根据该标准格式类型信息,选择与该标准格式类型信息对应预存的数据解析规则和转码规则,对该浮点数据进行预处理,得到对应的指数数据和尾数数据,从而能够灵活准确地对任意标准格式的浮点数据进行预处理。
[0055]
可选地,上述的浮点数据具体为符合ieee二进制浮点数算术标准的数据,则上述的预处理模块,具体用于:
[0056]
a1:提取该浮点数据的指数部分数据,并将该指数部分数据对应的指数值减去预设的指数偏移值,得到该指数部分数据对应的真实指数值;确定该真实指数值对应的二进制补码作为该浮点数据对应的指数数据;
[0057]
a2:提取该浮点数据的尾数部分数据,并添加隐含位1和符号位,得到该浮点数据对应的有效数据原码;确定该有效数据原码对应的二进制补码作为该浮点数据对应的尾数数据;
[0058]
a3:输出该指数数据和该尾数数据。
[0059]
在a1中,对于符合ieee二进制浮点数算术标准的浮点数据,为了保证指数部分数据能够通过无符号的原码表示,该指数部分数据通常为在真实指数值上增加了预设的指数偏移值得到的二进制原码。示例性,对于符合ieee754的单精度浮点数据,该预设的指数偏移值为127;对于符合ieee754的半精度浮点数据,该预设的指数偏移值为15。具体地,在步骤a1中,根据标准格式规定的指数所在的位数,提取该浮点数据的指数部分数据,并求得该指数部分数据对应的指数值;将该指数值进去预设的指数偏移值,即可得到该真实指数值。之后,为了方便后续的运算转换,求取该真实指数值的二进制补码,作为该浮点数据对应的指数数据。
[0060]
在a2中,根据标准格式规定的尾数所在的位数,提取该浮点数据的尾数部分数据;根据该标准格式规定的符号位(通常为浮点数据的最高位)获取该浮点数据的符号位的值。之后,在该尾数部分数据前添加隐含位1以及符号位(该符号位的值与该浮点数据的符号位的值一致),即可得到该浮点数据对应的有效数据原码,该有效数据原码能够准确地表达该浮点数据所表达的有效数据位的数。之后,为了方便后续的运算转换,求取该有效数据原码对应的二进制补码作为该浮点数据的尾数数据。
[0061]
在a3中,将该指数数据和尾数数据输出至选择模块,以进行后续的数据转换。
[0062]
以下以一个半精度浮点数据1 10000 0100000000对上述的预处理过程进行示例描述:
[0063]
(1)提取该半精度浮点数据的第10~14这5位数据“10000”,这5位数据表示的指数值为“16”,将该指数值exp减去指数偏移值15,得到的真实指数值为16

15=1;之后求该真实指数值“1”对应的二进制补码,即可得到该半精度浮点数据对应的指数数据“00001”。
[0064]
(2)提取该半精度浮点数据的第0~9这10位数据“0100000000”,作为尾数部分数据。在该尾数部分数据前添加隐含位1,得到“10100000000”,再添加符号位1,得到有效数据原码“110100000000”;之后,求该有效数据原码的二进制补码,即得到尾数数据“1011 0000 0000”。
[0065]
(3)将5bit指数数据“00001”和12bit尾数数据“1011 0000 0000”共17bit数据输出至选择模块。
[0066]
选择模块32,用于根据所述指数数据和所述尾数数据,通过位选择操作生成所述尾数数据对应的目标移位数据;所述位选择操作包括根据所述指数数据,选择所述尾数数据的指定数据位的数据并对剩余的数据位进行数据填充的操作。
[0067]
选择模块在获取到指数数据和尾数数据后,根据该指数数据确定要选择的指定数据位,获取该指定数据位的数据,并对剩余的数据位进行数据填,从而实现位选择操作。例如,可以选择该尾数数据的目标数据位数据作为指定低位的数据或者指定高位的数据,并对除该指定低位以外的剩余高位或者除指定高位以外的剩余低位进行数据填充,从而可以通过简单的位选择操作代替移位寄存器的复杂移位操作,等效实现尾数数据的左移或者右移,简单高效地得到该尾数数据对应的目标移位数据。该目标移位数据具体为融合了指数数据和尾数数据的信息,使得无需乘以指数即可较准确地表达该浮点数据的实际值的数据。
[0068]
定点数据确定模块33,用于根据所述目标移位数据,生成所述浮点数据对应的目
标定点数据。
[0069]
在得到能够反映浮点数据的实际值的目标移位数据后,根据预设的定点数类型(例如16位整型),提取该目标移位数据对应位数的数据,并进行补码转原码运算,即可得到该浮点数据对应的目标定点数据。
[0070]
本技术实施例中,通过预处理模块获取浮点数据进行处理,得到浮点数据对应的指数数据和尾数数据;以及,通过选择模块,根据该指数数据和尾数数据,通过位选择操作生成尾数数据对应的移位数据;之后,通过定点数据确定模块,根据该移位数据,生成该浮点数据对应的目标定点数据。由于在浮点转定点过程中,只需根据指数数据和尾数数据,通过选择模块进行位选择操作,即可生成尾数数据对应的移位数据,即,能够通过简单的位选择操作来代替移位寄存器复杂的移位处理,因此能够高效准确地生成目标定点数据,提高浮点数据转换为定点数据的效率。
[0071]
实施例二:
[0072]
图4示出了本技术实施例提供的第二种浮点转定点装置的结构示意图,该浮点转定点装置具体为对实施例一中的浮点转定点装置的各个模块的进一步细化,其各个模块的主要功能请参见实施例一中的相关描述,此处不赘述。
[0073]
可选地,本技术实施例的选择模块包括:
[0074]
指数相加单元,用于将所述浮点数据对应的指数数据与输入的放大系数进行相加,得到目标指数数据;
[0075]
尾数获取单元,用于获取所述浮点数据对应的尾数数据进行处理,得到目标尾数数据;
[0076]
选择功能单元,用于根据所述目标指数数据和所述目标尾数数据,对所述目标尾数数据进行位选择操作,生成所述尾数数据对应的移位数据。
[0077]
本技术实施例中,考虑到在一些运算场景中,将浮点数据转换为对应的定点数据后,可能需要对该定点数据乘以预设的放大系数得到对应的放大值作为目标定点数据(例如神经网络运算过程中,需要一个定点数据乘以预设权重得到对应的放大值作为输出结果,将该输出结果作为后续的迭代参数),为了保证该最终得的目标定点数据的精确度,可以在获取到浮点数据的指数数据后,先通过指数数据相加的方式提前实现乘法运算,从而能够使得后续保留到整数位的尾数的位数较多,提高目标定点数据的精确度。
[0078]
具体地,指数相加单元可以获取预处理模块传输的浮点数据对应的指数数据以及获取外部输入的放大系数,并将该指数数据与放大系数相加,得到提前实现乘法运算得到的指数数据,即目标指数数据。而对于选择模块的尾数获取单元,可以获取预处理模传输的浮点数据对应的尾数数据,得到目标尾数数据。之后,将该目标指数数据和目标尾数数据输入选择功能单元,根据该目标指数数据,选择该目标尾数数据的指定数据位的数据,实现位选择操作,得到该尾数数据对应的移位数据。
[0079]
通过本技术实施例的选择模块,能够在需要进行数据倍数放大的应用场景中,提前进行倍数放大处理,提高后续得到的目标定点数据的精确度。
[0080]
可选地,上述的尾数获取单元,具体用于获取所述浮点数据对应的尾数数据;根据所述尾数数据及预设的目标定点数据位数,对所述尾数数据进行位扩展,得到目标尾数数据。
[0081]
本技术实施例中,预设的目标定点数据位数,为根据需要转换到定点数据类型,确定的数值。例如,若最终需要转换到的定点数据类型为16位的整型数据,则该预设的目标定点数据位数为16。
[0082]
本技术实施例的尾数获取单元,具体在获取到浮点数据对应的尾数数据后,根据该预设的目标定点数据位数,对该尾数数据进行位扩展,得到具有与该预设的目标定点数据位数一致的整数位,以及具有与该尾数数据一致的小数位的目标尾数数据。具体地,位扩展为在该尾数数据的头部重复叠加与浮点数据的符号位的值一致的位,直至叠加后的数据位数与该预设的目标定点数据位数一致,得到目标尾数数据。示例性地,设预处理模块传输至尾数获取单元的尾数数据为上述的(2 10)bit尾数数据“1011 0000 0000”,该尾数数据的整数位包括为最高2位“10”,对应的小数位包括最后的10位“11 0000 0000”而预设的目标定点数据位数为16,则将该尾数数据的整数位“10”根据符号位“1”扩展到16位“1111 1111 1111 1110”,该16位整数位与10位小数位共同组成26位的目标尾数数据“11 1111 1111 1111 1011 0000 0000”[0083]
本技术实施例中,通过对从预处理模块获取到的尾数数据进行位扩展,得到目标尾数数据,该目标尾数数据的整数位数与预设的目标定点数据尾数一致,从而能够方便后续的位选择操作,保证得到的移位数据能够尽可能完整地表示浮点数据与该目标定点数据位数一致的部分的值,提高最终得到的目标定点数据的准确性。
[0084]
可选地,上述的选择功能单元包括:
[0085]
第一选择单元,用于当所述目标指数数据为正数时,根据所述目标指数数据,选择所述目标尾数数据的目标数目位低位数据组成目标位数据段,并在所述目标位数据段的尾部添加指定数目个0,生成与所述目标尾数数据的位数一致的移位数据。
[0086]
本技术实施例中的第一选择单元为选择器组成,其能够通过位选择操作,等效实现数据的左移。具体地,本技术实施例的指定数目和目标数目均根据目标指数数据确定。具体地,指定数目等于目标指数数据所表示的数值,上述的目标数目等于目标尾数的位数减去该指定数目得到的数值。
[0087]
具体地,当选择模块检测到目标指数数据为正数时,由指数相加单元向该第一选择单元输入该目标指数数据,并且由尾数获取单元向该第一选择单元输入目标尾数数据。之后,该第一选择单元根据该目标指数数据,选择目标尾数数据的目标数目位低位数据组成目标数据段,其中该目标数目位低位数据即为上述的指定数据位的数据。之后,在该目标位数据段的尾部添加指定数目个0,从而得到与目标尾数数据的位数一致的移位数据。例如,设当前的目标指数数据为5bit二进制数“00001”,目标尾数数据为26位二进制数“11 1111 1111 1111 1011 0000 0000”,则根据目标指数数据表示的数值“1”,确定指定数目为1,目标数目为26

1=25,因此,可以获取目标尾数数据的25位低位数据,得到目标位数据段“1 1111 1111 1111 1011 0000 0000”。之后,在该目标位数据段尾部添加1个0,即可得到26位的移位数据“11 1111 1111 1111 0110 0000 0000”。
[0088]
进一步地,若该目标尾数数据是对尾数数据进行位扩展得到的,则为了保证尾数数据不溢出,该目标尾数数据左移的最大位数等于位扩展时扩展的位数(简称位扩展数目),当左移的位数大于该位扩展数目时,需要进行饱和处理。因此,在本技术实施例中,当指定数目小于或者等于该位扩展数目时,可以通过上述的方法,根据该指定数目确定对应
的目标数目位低位数据组成目标数据段,在该目标数据段的尾部添加指定数目个0,得到移位数据。而当指定数目大于该位扩展数目时,则需要对该目标数目位低位数据进行饱和处理,具体地,此时不选择目标低位数据,而是直接根据目标尾数的符号位将移位数据设置为该移位数据所能够表示的最大值(符号位为0时)或者最小值(符号位为1时)示例性地,若位扩展数目为14位,目标尾数数据的位数为26位,则该第一选择单元具体可以由一个15选1的选择器组成,前14个选择器的输出为尾部添加1~14个0对应的14个移位数据;而最后一个选择器的输出为饱和情况下的移位数据。
[0089]
在确定了移位数据后,输出对应的目标移位数据。在一个实施例中,可以直接将该移位数据作为目标移位数据。
[0090]
本技术实施例中,通过第一选择单元的位选择操作,能够等效替代移位寄存器的左移操作,从而提高浮点转定点的效率。
[0091]
可选地,上述的选择功能单元还包括:
[0092]
第二选择单元,用于当所述目标指数数据为负数时,根据所述目标指数数据,选择所述尾数数据的目标数目位高位数据组成目标位数据段,并在所述目标位数据段的头部添加指定数目个与符号位一致的值,生成与所述目标尾数数据的位数一致的移位数据。
[0093]
本技术实施例中的第二选择单元为选择器组成,其能够通过位选择操作,等效实现数据的右移。具体地,本技术实施例的指定数目和目标数目均根据目标指数数据确定。具体地,指定数目等于目标指数数据所表示的数值绝对值,上述的目标数目等于目标尾数的位数减去该指定数目得到的数值。
[0094]
具体地,当选择模块检测到目标指数数据为负数时,控制指数相加单元向该第二选择单元输入该目标指数数据,以及控制尾数获取单元向该第二选择单元输入目标尾数数据。之后,该第二选择单元根据该目标指数数据,选择目标尾数数据的目标数目位高位数据组成目标数据段,其中该目标数目位高位数据即为上述的指定数据位的数据。之后,在该目标位数据段的头部添加指定数目个与符号位一致的值,从而得到与目标尾数数据的位数一致的移位数据。例如,设当前的目标指数数据为5bit二进制数“11110”,目标尾数数据为26位二进制数“11 1111 1111 1111 1011 0000 0000”,则根据目标指数数据表示的数值
“‑
1”,确定指定数目为1,目标数目为26

1=25,因此,可以获取目标尾数数据的25位高位数据,得到目标位数据段“11 1111 1111 1111 1011 0000 000”。之后,在该目标位数据段头部添加1位与符号位一致的值“1”,即可得到26位的移位数据“11 1111 1111 1111 1101 1000 0000”。
[0095]
进一步地,由于对于目标尾数数据来说,其实际有效的整数位位数只有两位(包括隐含位1和符号位),因此,在进行右移时,有效右移的最大位数为2,当右移的位数大于2时,可以直接将移位数据所表示的数值默认为0。因此,该第二选择单元实际为3选1的选择器,分别对应目标指数数据表示的值为
“‑
1”时对应的移位数据,目标指数数据表示的值为
“‑
2”时对应的移位数据,以及目标指数表示的值小于
“‑
2”时对应的移位数据。
[0096]
在确定了移位数据后,输出对应的目标移位数据。在一个实施例中,可以直接将该移位数据作为目标移位数据。
[0097]
本技术实施例中,通过第二选择单元的位选择操作,能够等效替代移位寄存器的右移操作,从而提高浮点转定点的效率。
[0098]
可选地,上述的第一选择单元和第二选择单元中,所述根据所述移位数据输出所述目标移位数据,包括:
[0099]
根据所述移位数据及预设的舍入保留位数,输出目标移位数据。
[0100]
本技术实施例中,预设的输入舍入保留位数为提前设定的待舍入保留位的位数。通常,该待舍入保留位可以称为“grs”,包括保护位(g)、舍入位(r)和粘贴位(s),该待舍入保留位的位数,即舍入保留位数为3。具体地,在得到移位数据后,可以将预设的目标定点数据位数和该舍入保留位数相加,得到移位输出位数;根据该移位输出位数,从该移位数据选择指定高位数据作为目标移位数据进行输出;该目标移位数据的位数等于该移位输出位数。示例性地,若预设的目标定点数据位数为16位,待舍入保留位数为3位,则输出的目标移位数据为16 3=19位。
[0101]
本技术实施例中,能够根据预设的舍入保留位数来输出目标移位数据,而不是直接将与目标尾数数据长度一致的移位数据进行输出,因此能够减少数据传输量,提高浮点转定点效率。
[0102]
如图4所示,上述的选择功能单元具体由上述的第一选择单元、第二选择单元和一个二选一的选择器和一个第一寄存器组成,该二选一的选择器可以从第一选择单元或者第二选择单元中获取目标移位数据,并输出至第一寄存器进行缓存,之后,定点数据确定模块从该第一寄存器获取该缓存的目标移位数据进行处理。
[0103]
可选地,上述的定点数据确定模块包括:
[0104]
舍入单元,用于根据预设的舍入模式,对所述目标移位数据进行舍入处理,生成目标定点数据。
[0105]
本技术实施例中,预设的舍入模式以包括向上取整模式、向下取整模式、向0取整模式和四舍五入模式中的任意一项。该舍入单元能够获取选择功能单元输出的目标移位数据。在获取得到该目标移位数据后,根据预设的输入模式,对该目标移位数据进行舍入处理,得到与预设的目标定点数据位数一致的二进制补码,并将该二进制补码进行原码求取处理,生成浮点数据对应的目标定点数据。之后,将该目标定点数据进行输出。具体地,可以将该目标定点数据缓存至第二寄存器后再输出。
[0106]
本技术实施例中,由于能够通过舍入单元,采取预设的舍入模式对目标移位数据进行准确的舍入处理,因此能够准确地生成目标定点数据。
[0107]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0108]
实施例三:
[0109]
图5示出了本技术实施例提供的一种浮点转定点方法的流程示意图,该浮点转定点方法的执行主体可以为电子设备,详述如下:
[0110]
在s501中,获取浮点数据进行预处理,得到所述浮点数据对应的指数数据和尾数数据。
[0111]
在s502中,根据所述指数数据和所述尾数数据,通过位选择操作生成所述尾数数据对应的目标移位数据;所述位选择操作包括根据所述指数数据,选择所述尾数数据的指定数据位的数据并对剩余的数据位进行数据填充的操作。
[0112]
在s503中,根据所述目标移位数据,生成所述浮点数据对应的目标定点数据。
[0113]
可选地,所述步骤s502,具体包括:
[0114]
将所述浮点数据对应的指数数据与输入的放大系数进行相加,得到目标指数数据;
[0115]
获取所述浮点数据对应的尾数数据进行处理,得到目标尾数数据;
[0116]
根据所述目标指数数据和所述目标尾数数据,对所述目标尾数数据进行位选择操作,生成所述尾数数据对应的目标移位数据。
[0117]
可选地,所述获取所述浮点数据对应的尾数数据进行处理,得到目标尾数数据,包括:
[0118]
获取所述浮点数据对应的尾数数据;根据所述尾数数据及预设的目标定点数据位数,对所述尾数数据进行位扩展,得到目标尾数数据。
[0119]
可选地,所述根据所述目标指数数据和所述目标尾数数据,对所述目标尾数数据进行位选择操作,生成所述尾数数据对应的目标移位数据,包括:
[0120]
当所述目标指数数据为正数时,根据所述目标指数数据,选择所述目标尾数数据的目标数目位低位数据组成目标位数据段,并在所述目标位数据段的尾部添加指定数目个0,生成与所述目标尾数数据的位数一致的移位数据;根据所述移位数据输出所述目标移位数据。
[0121]
可选地,所述根据所述目标指数数据和所述目标尾数数据,对所述目标尾数数据进行位选择操作,生成所述尾数数据对应的目标移位数据,还包括:
[0122]
当所述目标指数数据为负数时,根据所述目标指数数据,选择所述尾数数据的目标数目位高位数据组成目标位数据段,并在所述目标位数据段的头部添加指定数目个与符号位一致的值,生成与所述目标尾数数据的位数一致的移位数据;根据所述移位数据输出所述目标移位数据。
[0123]
可选地,所述根据所述移位数据输出所述目标移位数据,包括:
[0124]
根据所述移位数据及预设的舍入保留位数,输出目标移位数据。
[0125]
可选地,根据所述目标移位数据,生成所述浮点数据对应的目标定点数据,包括:
[0126]
根据预设的舍入模式,对所述目标移位数据进行舍入处理,生成目标定点数据。
[0127]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。另外,本技术实施例的各个步骤为实施例一或实施例二的各个单元或者模块所执行的步骤,请详细执行过程可以参见实施例一或实施例二的相关描述,此处不赘述。
[0128]
实施例四:
[0129]
图6是本技术一实施例提供的电子设备的示意图。如图6所示,该实施例的电子设备6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计
算机程序62,例如浮点转定点程序。所述处理器60包括浮点转定点装置63,所述处理器60执行所述计算机程序62时,使得浮点转定点装置63实现上述各装置实施例中模块/单元的功能,例如图3所示的预处理模块31至定点数据确定模块33的功能。或者,所述处理器60通过浮点转定点装置63运行所述计算机程序62时,实现上述各个浮点转定点方法实施例中的步骤,例如图5所示的步骤s501至s503。
[0130]
示例性的,所述计算机程序62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本技术。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述电子设备6中的执行过程。
[0131]
所述电子设备6可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述电子设备可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是电子设备6的示例,并不构成对电子设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备还可以包括输入输出设备、网络接入设备、总线等。
[0132]
所称处理器60可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0133]
所述存储器61可以是所述电子设备6的内部存储单元,例如电子设备6的硬盘或内存。所述存储器61也可以是所述电子设备6的外部存储设备,例如所述电子设备6上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器61还可以既包括所述电子设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
[0134]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0135]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0136]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员
可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0137]
在本技术所提供的实施例中,应该理解到,所揭露的装置/电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/电子设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0138]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0139]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0140]
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0141]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献