二进制浮点数加法运算方法、电路及计算装置制造方法及图纸

技术编号:30902354 阅读:14 留言:0更新日期:2021-11-22 23:46
本申请涉及一种二进制浮点数加法运算方法、电路及计算装置。二进制浮点数加法运算方法包括:在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,对二者进行预处理,以在获得第一预处理浮点数和第二预处理浮点数之后对第一预处理浮点数和第二预处理浮点数执行加法运算,获得中间结果浮点数;在中间结果浮点数的整数位数不大于第一数据格式中的整数位数的情况下,输出中间结果浮点数为运算结果;在中间结果浮点数的整数位数大于第一数据格式中的整数位数的情况下,对中间结果浮点数进行右移位,获得目标浮点数,并输出目标浮点数为运算结果。上述二进制浮点数加法运算方法能够提升浮点数加法运算中浮点数的有效位数和浮点数的表示精度。数和浮点数的表示精度。数和浮点数的表示精度。

【技术实现步骤摘要】
二进制浮点数加法运算方法、电路及计算装置


[0001]本专利技术涉及计算机体系架构
,特别是涉及二进制浮点数加法运算方法、电路及计算装置。

技术介绍

[0002]浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数,其主要由整数、指数和基数组成。由于浮点数是近似表示,因此浮点数会涉及到表达精度的问题。
[0003]浮点数运算即利用浮点数进行加减乘除等运算。在现有的浮点数加法运算中,浮点数虽然可以具有较大的数据的表示范围,但是在浮点数的位数有限的情况下,其数据表示范围大也就意味着其表示精度较低。

技术实现思路

[0004]基于此,有必要针对浮点运算中的浮点数表示精度低的问题,提供一种二进制浮点数加法运算方法、电路及计算装置。
[0005]一种二进制浮点数加法运算方法,包括:获取第一浮点数和第二浮点数,第一浮点数和第二浮点数的基数为2;判断第一浮点数的整数和第二浮点数的整数是否均为非零数。若否,则在第一浮点数和第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果,或在第一浮点数和第二浮点数中整数均为零的情况下输出零为运算结果;若是,则按照第一数据格式,分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,并根据第一浮点数和第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数。对第一预处理浮点数和第二预处理浮点数执行加法运算,以得到中间结果浮点数。判断中间结果浮点数的整数位数是否大于第一数据格式中的整数位数。若否,则输出中间结果浮点数为运算结果;若是,则将中间结果浮点数的整数向右移一位,并将中间结果浮点数的指数减一,得到目标浮点数,并输出目标浮点数为运算结果。
[0006]在本公开实施例中,第一浮点数和第二浮点数的整数和指数采用二进制进行表示,第一浮点数和第二浮点数的基数为2。在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,按照第一数据格式分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位。由于第一浮点数和第二浮点数中的整数向左移一位,就表示第一浮点数和第二浮点数的整数乘2。如此,在使得第一浮点数和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位之后,对第一预处理浮点数和第二预处理浮点数执行加法运算,可以在浮点数的位数有限的情况下,利用第一浮点数的整数和第二浮点数的整数的移位操作以及对应指数的调整,有效提升浮点数加法运算中浮点数的有效位数和浮点数的表示精度,以具有较好的运算精度。
[0007]在一个实施例中,按照第一数据格式,分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,以得到第一预处理浮点数和第二预处理浮点数,包括以下步骤。
[0008]在第一移位寄存器电路中按照第一数据格式缓存第一浮点数的整数,并判断第一移位寄存器电路缓存的最高位数和次高位数是否相同。若是,则第一移位寄存器电路移位第一浮点数的整数,第一计数器记录第一浮点数的整数移位的第一移位个数,直至第一移位寄存器电路缓存的最高位数和次高位数不同;若否,则第一移位寄存器电路缓存的整数为第一预处理浮点数的整数,第一浮点数的指数与第一移位个数之和为第一预处理浮点数的指数。
[0009]在第二移位寄存器电路中按照第一数据格式缓存第二浮点数的整数,并判断第二移位寄存器电路缓存的最高位数和次高位数是否相同。若是,则第二移位寄存器电路移位第二浮点数的整数,第二计数器记录第二浮点数的整数移位的第二移位个数,直至第二移位寄存器电路缓存的最高位数和次高位数不同;若否,则第二移位寄存器电路缓存的浮点数的整数为第二预处理浮点数的整数,第二浮点数的指数与第二移位个数之和为第二预处理浮点数的指数。
[0010]在一个实施例中,对第一预处理浮点数和第二预处理浮点数执行加法运算,以得到中间结果浮点数,包括以下步骤。
[0011]判断第一预处理浮点数的指数和第二预处理浮点数的指数是否相同。
[0012]若是,则对第一预处理浮点数的整数和第二预处理浮点数的整数执行加法运算,以得到中间结果浮点数的整数;第一预处理浮点数的指数或第二预处理浮点数的指数对应为中间结果浮点数的指数。
[0013]若否,则获取第一预处理浮点数的指数和第二预处理浮点数的指数差值的绝对值。在第一预处理浮点数的指数大于或等于第二预处理浮点数的指数的情况下,根据差值的绝对值向右移位第一预处理浮点数的整数,并对第二预处理浮点数的整数和移位后的第一预处理浮点数的整数执行加法运算,以得到中间结果浮点数的整数。第二预处理浮点数的指数对应为中间结果浮点数的指数。在第一预处理浮点数的指数小于第二预处理浮点数的指数的情况下,根据差值的绝对值向右移位第二预处理浮点数的整数,并对第一预处理浮点数的整数和移位后的第二预处理浮点数的整数执行加法运算,以得到中间结果浮点数的整数。第一预处理浮点数的指数对应为中间结果浮点数的指数。
[0014]在一个实施例中,中间结果浮点数按照第二数据格式缓存,第二数据格式的整数位数等于第一数据格式的整数位数加一。判断中间结果浮点数的整数位数是否大于第一数据格式中的整数位数,包括:判断中间结果浮点数对应位于第二数据格式的整数位数中最高位和次高位的数值是否相同。若是,则输出中间结果浮点数为运算结果;若否,则将中间结果浮点数的整数向右移一位,并将中间结果浮点数的指数减一,得到目标浮点数,并输出目标浮点数为运算结果。
[0015]在一个实施例中,第一浮点数和第二浮点数的实际值为:N/2
X
。其中,N为对应浮点数的整数,整数包括符号,X为对应浮点数的指数。
[0016]本申请实施例还提供了一种二进制浮点数加法运算电路。该二进制浮点数加法运算电路包括:数据预处理模块、数据运算模块和数据后处理模块。
[0017]数据预处理模块用于获取第一浮点数和第二浮点数,并在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,按照第一数据格式分别向左移位第一浮点数和第二浮点数,使第一浮点数中整数的符号位和第二浮点数中整数的符号位均对应为第一数据格式中整数位数的最高位,并根据第一浮点数和第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数。
[0018]数据运算模块用于对第一预处理浮点数和第二预处理浮点数执行加法运算,以得到中间结果浮点数。
[0019]数据后处理模块用于执行以下处理。在第一浮点数和第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果。在第一浮点数和第二浮点数中整数均为零的情况下输出零为运算结果。在第一浮点数的整数和第二浮点数的整数均为非零数的情况下,判断中间结果浮点数的整数位数是否大于第一数据格式中的整数位数;若否,则输出中间结果浮点数为运算结本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种二进制浮点数加法运算方法,其特征在于,包括:获取第一浮点数和第二浮点数,所述第一浮点数和所述第二浮点数的基数为2,判断所述第一浮点数的整数和所述第二浮点数的整数是否均为非零数;若否,则在所述第一浮点数和所述第二浮点数中一者整数为非零数的情况下输出非零数对应的浮点数为运算结果,或在所述第一浮点数和所述第二浮点数中整数均为零的情况下输出零为运算结果;若是,则按照第一数据格式,分别向左移位所述第一浮点数和所述第二浮点数,使所述第一浮点数中整数的符号位和所述第二浮点数中整数的符号位均对应为所述第一数据格式中整数位数的最高位,并根据所述第一浮点数和所述第二浮点数的整数移位个数调整对应的指数,以得到第一预处理浮点数和第二预处理浮点数;对所述第一预处理浮点数和所述第二预处理浮点数执行加法运算,以得到中间结果浮点数;判断所述中间结果浮点数的整数位数是否大于所述第一数据格式中的整数位数;若否,则输出所述中间结果浮点数为运算结果;若是,则将所述中间结果浮点数的整数向右移一位,并将所述中间结果浮点数的指数减一,得到目标浮点数,并输出所述目标浮点数为运算结果。2.根据权利要求1所述的二进制浮点数加法运算方法,其特征在于,所述按照第一数据格式,分别向左移位所述第一浮点数和所述第二浮点数,使所述第一浮点数中整数的符号位和所述第二浮点数中整数的符号位均对应为所述第一数据格式中整数位数的最高位,以得到第一预处理浮点数和第二预处理浮点数,包括:在第一移位寄存器电路中按照所述第一数据格式缓存所述第一浮点数的整数,并判断所述第一移位寄存器电路缓存的最高位数和次高位数是否相同;若是,则所述第一移位寄存器电路移位所述第一浮点数的整数,第一计数器记录所述第一浮点数的整数移位的第一移位个数,直至所述第一移位寄存器电路缓存的最高位数和次高位数不同;若否,则所述第一移位寄存器电路缓存的整数为所述第一预处理浮点数的整数,所述第一浮点数的指数与所述第一移位个数之和为所述第一预处理浮点数的指数;在第二移位寄存器电路中按照所述第一数据格式缓存所述第二浮点数的整数,并判断所述第二移位寄存器电路缓存的最高位数和次高位数是否相同;若是,则所述第二移位寄存器电路移位所述第二浮点数的整数,第二计数器记录所述第二浮点数的整数移位的第二移位个数,直至所述第二移位寄存器电路缓存的最高位数和次高位数不同;若否,则所述第二移位寄存器电路缓存的浮点数的整数为所述第二预处理浮点数的整数,所述第二浮点数的指数与所述第二移位个数之和为所述第二预处理浮点数的指数。3.根据权利要求1所述的二进制浮点数加法运算方法,其特征在于,所述对所述第一预处理浮点数和所述第二预处理浮点数执行加法运算,以得到中间结果浮点数,包括:判断所述第一预处理浮点数的指数和所述第二预处理浮点数的指数是否相同;若是,则对所述第一预处理浮点数的整数和所述第二预处理浮点数的整数执行加法运算,以得到所述中间结果浮点数的整数;所述第一预处理浮点数的指数或所述第二预处理浮点数的指数对应为所述中间结果浮点数的指数;
若否,则获取所述第一预处理浮点数的指数和所述第二预处理浮点数的指数差值的绝对值;在所述第一预处理浮点数的指数大于或等于所述第二预处理浮点数的指数的情况下,根据所述差值的绝对值向右移位所述第一预处理浮点数的整数,并对所述第二预处理浮点数的整数和移位后的所述第一预处理浮点数的整数执行加法运算,以得到所述中间结果浮点数的整数;所述第二预处理浮点数的指数对应为所述中间结果浮点数的指数;在所述第一预处理浮点数的指数小于所述第二预处理浮点数的指数的情况下,根据所述差值的绝对值向右移位所述第二预处理浮点数的整数,并对所述第一预处理浮点数的整数和移位后的所述第二预处理浮点数的整数执行加法运算,以得到所述中间结果浮点数的整数;所述第一预处理浮点数的指数对应为所述中间结果浮点数的指数。4.根据权利要求1所述的二进制浮点数加法运算方法,其特征在于,所述中间结果浮点数按照第二数据格式缓存;所述第二数据格式的整数位数等于所述第一数据格式的整数位数加一;所述判断所述中间结果浮点数的整数位数是否大于所述第一数据格式中的整数位数,包括:判断所述中间结果浮点数对应位于所述第二数据格式的整数位数中最高位和次高位的数值是否相同;若是,则输出所述中间结果浮点数为运算结果;若否,则将所述中间结果浮点数的整数向右移一位,并将所述中间结果浮点数的指数减一,得到所述目标浮点数,并输出所述目标浮点数为运算结果。5.根据权利要求1~4中任一项所述的二进制浮点数加法运...

【专利技术属性】
技术研发人员:王吉健刘少清周亚莉徐红如
申请(专利权)人:南京英锐创电子科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1