CN110427172A - 浮点数处理方法、装置、设备及计算机可读存储介质 - Google Patents
浮点数处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110427172A CN110427172A CN201910705343.0A CN201910705343A CN110427172A CN 110427172 A CN110427172 A CN 110427172A CN 201910705343 A CN201910705343 A CN 201910705343A CN 110427172 A CN110427172 A CN 110427172A
- Authority
- CN
- China
- Prior art keywords
- variable
- floating
- community
- type
- type member
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
Abstract
本发明提供一种浮点数处理方法、装置、设备及计算机可读存储介质。本发明的方法,通过将浮点数的二进制数据赋值给共同体变量的整数型成员变量;由于共同体变量中的多个成员变量共用内存地址空间,在将该浮点数的二进制数据赋值给共同体变量的整数型成员变量后,也就是将浮点数的二进制数据存储到了该共同体变量的浮点型成员变量所指向的内存地址空间;通过打印共同体变量的浮点型成员变量,即可得到浮点数的十进制数据;无需技术人员根据IEEE754标准规定的浮点数的二进制科学计数法表示格式,手动计算或者编程实现将浮点数的二进制数据解析为对应的十进制数据的复杂过程,提高了获取浮点数的二进制数据对应的十进制数据的准确性和效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种浮点数处理方法、装置、设备及计算机可读存储介质。
背景技术
目前,在不同架构的微处理器上,所有类型的数据在内存和寄存器中均是以二进制数据存储,即均表示成0和1序列。根据不同的数据类型,计算机采取数据类型对应的解析方式对二进制数据进行解析,来获取对应的十进制表示。
IEEE二进制浮点数算术标准(Institute of Electrical and ElectronicsEngineers 754,简称IEEE754标准)规定,对于单精度浮点数,是把单精度浮点数对应的内存划分为符号位、指数域和尾数域,来存储以二进制科学计数法表示的单精度浮点数的二进制数据。由于浮点数的二进制表示比较复杂且很不直观,对浮点数的二进制数据进行解析获取浮点数的十进制数据比较复杂。
目前,为了获取浮点数的十进制数据,需要技术人员根据IEEE754标准规定的浮点数的二进制科学计数法表示格式,解析计算得到浮点数的十进制数据。例如,对于单精度浮点数,按照公式v=(-1)sign×mant×2bexp计算得到浮点数的十进制数据。其中,sign是指浮点数二进制数据中符号位的值;bexp是指浮点数二进制数据中指数域对应的十进制数减去127;mant是指浮点数二进制数据中尾数域作为小数部分、且整数部分为1的数据,可以将“1.”与尾数域拼接得到。
但是,这种获取浮点数十进制数据的方法,需要由技术人员手动或者通过编程,先从浮点数的二进制数据中分别提取符号位、指数域和尾数域的值,然后完成上述较复杂的计算过程,非常容易出错,耗时很长,效率很低。
发明内容
本发明提供一种浮点数处理方法、装置、设备及计算机可读存储介质,用以解决现有技术中获取浮点数十进制数据的方法,需要由技术人员手动或者通过编程,先从浮点数的二进制数据中分别提取符号位、指数域和尾数域的值,然后完成上述较复杂的计算过程,非常容易出错,耗时很长,效率很低的问题。
本发明的一个方面是提供一种浮点数处理方法,包括:
根据浮点数的浮点类型,确定所述浮点类型对应的共同体变量,所述共同体变量包括浮点型成员变量和整数型成员变量;
将所述浮点数的二进制数据赋值给所述共同体变量的整数型成员变量;
打印所述共同体变量的浮点型成员变量,得到所述浮点数的十进制数据。
本发明的另一个方面是提供一种浮点数处理装置,包括:
共同体处理模块,用于根据浮点数的浮点类型,确定所述浮点类型对应的共同体变量,所述共同体变量包括浮点型成员变量和整数型成员变量;
赋值模块,用于将所述浮点数的二进制数据赋值给所述共同体变量的整数型成员变量;
打印模块,用于打印所述共同体变量的浮点型成员变量,得到所述浮点数的十进制数据。
本发明的另一个方面是提供一种浮点数处理设备,包括:
处理器,存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序;
其中,所述处理器运行所述计算机程序时实现上述所述的浮点数处理方法。
本发明的另一个方面是提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述所述的浮点数处理方法。
本发明提供的浮点数处理方法、装置、设备及计算机可读存储介质,通过将浮点数的二进制数据赋值给共同体变量的整数型成员变量;由于共同体变量中的多个成员变量共用内存地址空间,在将该浮点数的二进制数据赋值给共同体变量的整数型成员变量后,也就是将浮点数的二进制数据存储到了该共同体变量的浮点型成员变量所指向的内存地址空间;通过打印所述共同体变量的浮点型成员变量,即可得到所述浮点数的十进制数据;无需技术人员根据IEEE754标准规定的浮点数的二进制科学计数法表示格式,手动计算或者编程实现将浮点数的二进制数据解析为对应的十进制数据的复杂过程,提高了获取浮点数的二进制数据对应的十进制数据的准确性和效率。
附图说明
图1为本发明实施例提供的浮点数二进制数据存储格式示意图;
图2为本发明实施例一提供的浮点数处理方法流程图;
图3为本发明实施例二提供的浮点数处理方法流程图;
图4为本发明实施例三提供的浮点数处理装置的结构示意图;
图5为本发明实施例五提供的浮点数处理设备的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
首先对本发明所涉及的名词进行解释:
IEEE二进制浮点数算术标准:英文全称为Institute of Electrical andElectronics Engineers 754,简称为IEEE 754标准,是20世纪80年代以来最广泛使用的浮点数运算标准,为许多处理器(CPU)与浮点运算器所采用。这个标准定义了浮点数的二进制科学计数法的表示格式。
GDB:全称GNU Debugger,是GNU开源组织发布的一个UNIX下的程序调试工具。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
本发明具体的应用场景:IEEE二进制浮点数算术标准(Institute of Electricaland Electronics Engineers 754,简称IEEE754标准)规定,对于单精度浮点数,是把单精度浮点数对应的内存划分为符号位、指数域和尾数域,来存储以二进制科学计数法表示的单精度浮点数的二进制数据。
例如,对于32位的处理器,根据IEEE754标准,单精度浮点数的二进制数据在内存中占用32位(bit),如图1所示,单精度浮点数对应的内存空间划分为符号位、指数域和尾数域,分别占用1bit、8bit和23bit。各部分所表示的含义详见IEEE754标准,本实施例此处不再赘述。图1中是以十进制数据为8.25的单精度浮点数的二进制数据的存储为例,对浮点数二进制数据存储格式进行示例性的说明。
由于浮点数的二进制表示比较复杂且很不直观,对浮点数的二进制数据进行解析获取浮点数的十进制数据比较复杂。已知浮点数在内存或者寄存器中的二进制数据,如何获取浮点数的十进制数据,是一个亟需解决的问题。例如,对于32位的处理器,单精度浮点数在内存中存储的二进制数据为32位,如何根据内存中存储的32位的单精度浮点数的二进制数据,获取该单精度浮点数的十进制数据。再如,对于32位寄存器,可以用于存储一个单精度浮点数的二进制数据,如何获取该寄存器中的二进制数据对应的单精度浮点数的十进制数据。
下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
图2为本发明实施例一提供的浮点数处理方法流程图。本发明实施例针对现有技术中获取浮点数十进制数据的方法,需要由技术人员手动或者通过编程,先从浮点数的二进制数据中分别提取符号位、指数域和尾数域的值,然后完成上述较复杂的计算过程,非常容易出错,耗时很长,效率很低的问题,提供了浮点数处理方法。
本实施例中的方法应用于中央处理器,可以是微处理器等。
如图2所示,该方法具体步骤如下:
步骤S101、根据浮点数的浮点类型,确定浮点类型对应的共同体变量,共同体变量包括浮点型成员变量和整数型成员变量。
本实施例中,可以预先定义各浮点类型对应的共同体变量,共同体变量包括浮点型成员变量和整数型成员变量,浮点型成员变量与整数型成员变量共用内存地址空间。
示例性的,预先定义共同体变量可以包括多个,分别针对不同的浮点数类型的二进制数据所占用的位数,定义对应的共同体变量,使得共同体变量中的成员变量所占用的内存空间的位数与对应浮点数类型的二进制数据所占用内存空间的位数一致。
例如,对于单精度浮点数,可以通过如下方式定义一个变量名为fl_union的共同体变量:
其中,fl_union1中包括两个成员变量,ff1为共同体变量中的浮点型成员变量,ff1是单精度浮点型的变量,ii1为共同体变量中的整数型成员变量,ii1是整型的变量。单精度浮点数的二进制数据所占用内存空间的位数一致。
例如,对于双精度浮点数,可以通过如下方式定义一个变量名为fl_union2的共同体变量:
其中,fl_union2中包括两个成员变量,ff2为共同体变量中的浮点型成员变量,ff2是双精度浮点型的变量,ii2为共同体变量中的整数型成员变量,ii2是长整型的变量。双精度浮点数的二进制数据与长整型数据所占用内存空间的位数一致。
例如,对于由4个单精度浮点数构成的浮点向量,浮点向量的二进制数据占用128bit,可以通过如下方式定义一个变量名为fl_union3的共同体变量:
其中V4f32和V4i32是自定义的数据类型,V4f32是自定义整数类型的向量,V4i32是自定义浮点类型的向量;fl_union3中包括两个成员变量,ff3为共同体变量中的浮点型成员变量,ff3是自定义的用于存储4个单精度浮点数的浮点类型的向量,ii3为共同体变量中的整数型成员变量,ii3是自定义的用于存储4个整型数的整数类型的向量。单精度浮点数的二进制数据所占用内存空间的位数一致,因此,ii3与4个单精度浮点数构成的浮点向量的二进制数据占用内存空间的位数一致。
本实施例中,在需要获取浮点数的二进制数据对应的十进制数据时,处理器根据浮点数的浮点类型,确定与浮点数的浮点类型对应的共同体变量。
步骤S102、将浮点数的二进制数据赋值给共同体变量的整数型成员变量。
本实施例中,在确定与浮点数的浮点类型对应的共同体变量之后,处理器将该浮点数的二进制数据赋值给共同体变量的整数型成员变量。
由于共同体变量中整数型成员变量与浮点数的二进制数据占用内存空间大小一致,在将该浮点数的二进制数据赋值给共同体变量的整数型成员变量时,不会损失数据。
步骤S103、打印共同体变量的浮点型成员变量,得到浮点数的十进制数据。
在将浮点数的二进制数据赋值给共同体变量的整数型成员变量之后,由于共同体变量中的多个成员变量共用内存地址空间,在将该浮点数的二进制数据赋值给共同体变量的整数型成员变量后,也就是将浮点数的二进制数据存储到了该共同体变量的浮点型成员变量所指向的内存地址空间。
对于该内存地址空间中的二进制数据,本身是无意义的,当把它看成整数型成员变量后,它就具有对应整型的值;当把它看成浮点型成员变量后,它就按照IEEE754标准具有对应浮点类型的值。
本实施例中,在将浮点数的二进制数据赋值给共同体变量的整数型成员变量之后,通过调试工具或者printf函数,打印共同体变量的浮点型成员变量,即可打印出浮点数的十进制数据。
本发明实施例通过将浮点数的二进制数据赋值给共同体变量的整数型成员变量;由于共同体变量中的多个成员变量共用内存地址空间,在将该浮点数的二进制数据赋值给共同体变量的整数型成员变量后,也就是将浮点数的二进制数据存储到了该共同体变量的浮点型成员变量所指向的内存地址空间;通过打印共同体变量的浮点型成员变量,即可得到浮点数的十进制数据;无需技术人员根据IEEE754标准规定的浮点数的二进制科学计数法表示格式,手动计算或者编程实现将浮点数的二进制数据解析为对应的十进制数据的复杂过程,提高了获取浮点数的二进制数据对应的十进制数据的准确性和效率。
实施例二
图3为本发明实施例二提供的浮点数处理方法流程图。在上述实施例一的基础上,本实施例中,可以预先创建各浮点类型对应的共同体变量。如图3所示,该方法具体步骤如下:
步骤S201、创建各浮点类型对应的共同体变量。
浮点数可以是单精度浮点数类型、双精度浮点数类型、或者浮点向量类型。其中,浮点向量是由N个单精度浮点数排列而成的序列,其中N为正整数,N大于等于2。
本实施例中,可以预先创建各浮点类型对应的共同体变量,共同体变量包括浮点型成员变量和整数型成员变量,浮点型成员变量与整数型成员变量共用内存地址空间。
示例性的,预先定义共同体变量可以包括多个,分别针对不同的浮点数类型的二进制数据所占用的位数,定义对应的共同体变量,使得共同体变量中的成员变量所占用的内存空间的位数与对应浮点数类型的二进制数据所占用内存空间的位数一致。
具体的,创建各浮点类型对应的共同体变量至少包括以下三个方面:
第一,对于单精度浮点数类型,创建对应的第一共同体变量,第一共同体变量中的整数型成员变量为整型变量,第一共同体变量中的浮点型成员变量为单精度浮点型。
例如,对于单精度浮点数,可以通过如下方式定义一个变量名为fl_union的共同体变量:
其中,fl_union1中包括两个成员变量,ff1为共同体变量中的浮点型成员变量,ff1是单精度浮点型的变量,ii1为共同体变量中的整数型成员变量,ii1是整型的变量。单精度浮点数的二进制数据所占用内存空间的位数一致。
第二,对于双精度浮点数类型,创建对应的第二共同体变量,第二共同体变量中的整数型成员变量为长整型变量,第二共同体变量中的浮点型成员变量为双精度浮点型。
例如,对于双精度浮点数,可以通过如下方式定义一个变量名为fl_union2的共同体变量:
其中,fl_union2中包括两个成员变量,ff2为共同体变量中的浮点型成员变量,ff2是双精度浮点型的变量,ii2为共同体变量中的整数型成员变量,ii2是长整型的变量。双精度浮点数的二进制数据与长整型数据所占用内存空间的位数一致。
第三,对于浮点向量类型,创建对应的第三共同体变量,其中浮点向量是由N个单精度浮点数排列而成的序列,其中N为正整数,N大于等于2;第三共同体变量中的整数型成员变量为自定义整数类型的向量,自定义整数类型的向量用于存储N个整型数;第三共同体变量中的浮点型成员变量为自定义浮点类型的向量,自定义浮点类型的向量用于存储N个单精度浮点数;自定义整数类型的向量和自定义浮点类型的向量共用的内存地址空间用于存储N个单精度浮点数的二进制数据依次拼接而成的二进制数据。
例如,对于由4个单精度浮点数构成的浮点向量,浮点向量的二进制数据占用128bit,可以通过如下方式定义一个变量名为fl_union3的共同体变量:
其中V4f32和V4i32是自定义的数据类型,V4f32是自定义整数类型的向量,V4i32是自定义浮点类型的向量;fl_union3中包括两个成员变量,ff3为共同体变量中的浮点型成员变量,ff3是自定义的用于存储4个单精度浮点数的浮点类型的向量,ii3为共同体变量中的整数型成员变量,ii3是自定义的用于存储4个整型数的整数类型的向量。单精度浮点数的二进制数据所占用内存空间的位数一致,因此,ii3与4个单精度浮点数构成的浮点向量的二进制数据占用内存空间的位数一致。
步骤S202、根据浮点数的浮点类型,确定浮点类型对应的共同体变量。
本实施例中,在需要获取浮点数的二进制数据对应的十进制数据时,处理器根据浮点数的浮点类型,确定与浮点数的浮点类型对应的共同体变量。
可选的,可以根据创建的各浮点类型对应的共同体变量,建立各个浮点类型及其对应的共同体变量的对应关系。
步骤S203、将浮点数的二进制数据赋值给共同体变量的整数型成员变量。
本实施例中,在确定与浮点数的浮点类型对应的共同体变量之后,处理器将该浮点数的二进制数据赋值给共同体变量的整数型成员变量。
由于共同体变量中整数型成员变量与浮点数的二进制数据占用内存空间大小一致,在将该浮点数的二进制数据赋值给共同体变量的整数型成员变量时,不会损失数据。
步骤S204、打印共同体变量的浮点型成员变量,得到浮点数的十进制数据。
在将浮点数的二进制数据赋值给共同体变量的整数型成员变量之后,由于共同体变量中的多个成员变量共用内存地址空间,在将该浮点数的二进制数据赋值给共同体变量的整数型成员变量后,也就是将浮点数的二进制数据存储到了该共同体变量的浮点型成员变量所指向的内存地址空间。
对于该内存地址空间中的二进制数据,本身是无意义的,当把它看成整数型成员变量后,它就具有对应整型的值;当把它看成浮点型成员变量后,它就按照IEEE754标准具有对应浮点类型的值。
具体的,若共同体变量的浮点型成员变量为自定义浮点类型的向量,则处理器需要先对自定义浮点类型的向量进行解析,确定浮点向量所包括的单精度浮点数的个数N;然后根据浮点型成员变量对应的内存地址空间中的二进制数据,确定自定义浮点类型的向量中的每个单精度浮点数对应的32位的二进制数据,依次打印自定义浮点类型的向量中的每个单精度浮点数的十进制数据,得到浮点向量的十进制数据。
示例性的,该步骤具体可以采用如下方式实现:
通过调试工具打印共同体变量的浮点型成员变量,得到浮点数的十进制数据。
可选的,调试工具可以是GDB。例如,基于上述步骤S201中对于第一共同体变量fl_union1的定义,该步骤中可以通过执行GDB的以下命令:“p/d fl_union1.ff1”或者“p fl_union1.ff1”,来打印第一共同体变量的浮点型成员变量ff1。其中,命令中的“/d”表示打印十进制数据。
示例性的,本实施例中,可以将打印自定义浮点类型的向量的过程封装成为一个命令或者接口。该步骤中,在确定共同体变量的浮点型成员变量为自定义浮点类型的向量时,处理器通过执行一次对应的命令、或者调用一次对应的接口,即可实现自定义浮点类型的向量的打印。
例如,基于上述步骤S201中对于第三共同体变量fl_union3的定义,该步骤中可以通过执行预先封装好的GDB的以下命令:“p/d fl_union3.ff3”或者“p fl_union3.ff3”,来打印第三共同体变量的浮点型成员变量ff3。其中,命令中的“/d”表示打印十进制数据。
示例性的,该步骤具体还可以采用如下方式实现:
通过printf函数打印共同体变量的浮点型成员变量,得到浮点数的十进制数据。
例如,基于上述步骤S201中对于第一共同体变量fl_union1的定义,该步骤中可以通过执行以下代码:“printf("%f\n",fl_union1.ff1);”或者“printf("%.nf\n",fl_union1.ff1);”,来打印第一共同体变量的浮点型成员变量ff1。其中,命令中的“.n”中的n为正整数,表示打印十进制数据时保留的小数点后的位数。
本实施例的另一实施方式中,浮点数处理方法还可以用于根据浮点数的十进制数据,打印出对应的二进制数据。
具体的,浮点数处理方法还可以包括:
根据浮点数的浮点类型,确定浮点类型对应的共同体变量,共同体变量包括浮点型成员变量和整数型成员变量;将浮点数的十进制数据赋值给共同体变量的浮点型成员变量;打印共同体变量的整数型成员变量,得到浮点数的二进制数据。
这一实施方式中,各浮点类型对应的共同体变量的定义与上述步骤S201中一致,根据浮点数的浮点类型确定浮点类型对应的共同体变量与上述步骤S202一致,本实施例此处不再赘述。
另外,这一实施方式中,本实施例中,在确定与浮点数的浮点类型对应的共同体变量之后,处理器将浮点数的十进制数据赋值给共同体变量的浮点型成员变量。由于共同体变量中整数型成员变量与浮点数的二进制数据占用内存空间大小一致,在将该浮点数的十进制数据赋值给共同体变量的浮点型成员变量时,不会损失数据。
在将浮点数的十进制数据赋值给共同体变量的浮点型成员变量之后,由于共同体变量中的多个成员变量共用内存地址空间,在将该浮点数的十进制数据赋值给共同体变量的浮点型成员变量后,也就是将浮点数的十进制数据存储到了该共同体变量的整数型成员变量所指向的内存地址空间。
对于该内存地址空间中的二进制数据,本身是无意义的,当把它看成整数型成员变量后,它就具有对应整型的值;当把它看成浮点型成员变量后,它就按照IEEE754标准具有对应浮点类型的值。
在将浮点数的十进制数据赋值给共同体变量的浮点型成员变量之后,通过调试工具或者printf函数,打印共同体变量的整数型成员变量,即可打印出浮点数的二进制数据。
本发明实施例通过创建各浮点类型对应的共同体变量,根据浮点数的浮点类型,确定浮点类型对应的共同体变量,共同体变量包括浮点型成员变量和整数型成员变量;将浮点数的二进制数据赋值给共同体变量的整数型成员变量;通过调试工具或者printf函数打印共同体变量的浮点型成员变量,得到浮点数的十进制数据,无需技术人员根据IEEE754标准规定的浮点数的二进制科学计数法表示格式,手动计算或者编程实现将浮点数的二进制数据解析为对应的十进制数据的复杂过程,提高了获取浮点数的二进制数据对应的十进制数据的准确性和效率。
实施例三
图4为本发明实施例三提供的浮点数处理装置的结构示意图。本发明实施例提供的浮点数处理装置可以执行浮点数处理方法实施例提供的处理流程。如图4所示,该浮点数处理装置30包括:共同体处理模块301,赋值模块302和打印模块303。
具体地,共同体处理模块301,用于根据浮点数的浮点类型,确定浮点类型对应的共同体变量,共同体变量包括浮点型成员变量和整数型成员变量。
赋值模块302,用于将浮点数的二进制数据赋值给共同体变量的整数型成员变量。
打印模块303,用于打印共同体变量的浮点型成员变量,得到浮点数的十进制数据。
本发明实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过将浮点数的二进制数据赋值给共同体变量的整数型成员变量;由于共同体变量中的多个成员变量共用内存地址空间,在将该浮点数的二进制数据赋值给共同体变量的整数型成员变量后,也就是将浮点数的二进制数据存储到了该共同体变量的浮点型成员变量所指向的内存地址空间;通过打印共同体变量的浮点型成员变量,即可得到浮点数的十进制数据;无需技术人员根据IEEE754标准规定的浮点数的二进制科学计数法表示格式,手动计算或者编程实现将浮点数的二进制数据解析为对应的十进制数据的复杂过程,提高了获取浮点数的二进制数据对应的十进制数据的准确性和效率。
实施例四
在上述实施例三的基础上,本实施例中,如图4所示,共同体处理模块还用于:创建各浮点类型对应的共同体变量。
可选的,共同体处理模块还用于:
对于单精度浮点数类型,创建对应的第一共同体变量,第一共同体变量中的整数型成员变量为整型变量,第一共同体变量中的浮点型成员变量为单精度浮点型。
可选的,共同体处理模块还用于:
对于双精度浮点数类型,创建对应的第二共同体变量,第二共同体变量中的整数型成员变量为长整型变量,第二共同体变量中的浮点型成员变量为双精度浮点型。
可选的,共同体处理模块还用于:
对于浮点向量类型,创建对应的第三共同体变量,其中浮点向量是由N个单精度浮点数排列而成的序列,其中N为正整数,N大于等于2;第三共同体变量中的整数型成员变量为自定义整数类型的向量,自定义整数类型的向量用于存储N个整型数;第三共同体变量中的浮点型成员变量为自定义浮点类型的向量,自定义浮点类型的向量用于存储N个单精度浮点数;自定义整数类型的向量和自定义浮点类型的向量共用的内存地址空间用于存储N个单精度浮点数的二进制数据依次拼接而成的二进制数据。
可选的,打印模块还用于:
若共同体变量的浮点型成员变量为自定义浮点类型的向量,则依次打印自定义浮点类型的向量中的N个单精度浮点数的十进制数据。
可选的,打印模块还用于:
通过调试工具打印共同体变量的浮点型成员变量,得到浮点数的十进制数据。
可选的,打印模块还用于:
通过printf函数打印共同体变量的浮点型成员变量,得到浮点数的十进制数据。
可选的,在本实施例的另一实施方式中,共同体处理模块用于:根据浮点数的浮点类型,确定浮点类型对应的共同体变量,共同体变量包括浮点型成员变量和整数型成员变量;赋值模块用于:将浮点数的十进制数据赋值给共同体变量的浮点型成员变量;打印模块用于:打印共同体变量的整数型成员变量,得到浮点数的二进制数据。
本发明实施例提供的装置可以具体用于执行上述实施例二所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过创建各浮点类型对应的共同体变量,根据浮点数的浮点类型,确定浮点类型对应的共同体变量,共同体变量包括浮点型成员变量和整数型成员变量;将浮点数的二进制数据赋值给共同体变量的整数型成员变量;通过调试工具或者printf函数打印共同体变量的浮点型成员变量,得到浮点数的十进制数据,无需技术人员根据IEEE754标准规定的浮点数的二进制科学计数法表示格式,手动计算或者编程实现将浮点数的二进制数据解析为对应的十进制数据的复杂过程,提高了获取浮点数的二进制数据对应的十进制数据的准确性和效率。
实施例五
图5为本发明实施例五提供的浮点数处理设备的结构示意图。如图5所示,该浮点数处理设备70包括:处理器701,存储器702,以及存储在存储器702上并可在处理器701上运行的计算机程序。
其中,处理器701运行计算机程序时实现上述任一方法实施例提供的浮点数处理方法。
本发明实施例通过将浮点数的二进制数据赋值给共同体变量的整数型成员变量;由于共同体变量中的多个成员变量共用内存地址空间,在将该浮点数的二进制数据赋值给共同体变量的整数型成员变量后,也就是将浮点数的二进制数据存储到了该共同体变量的浮点型成员变量所指向的内存地址空间;通过打印共同体变量的浮点型成员变量,即可得到浮点数的十进制数据;无需技术人员根据IEEE754标准规定的浮点数的二进制科学计数法表示格式,手动计算或者编程实现将浮点数的二进制数据解析为对应的十进制数据的复杂过程,提高了获取浮点数的二进制数据对应的十进制数据的准确性和效率。
另外,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现上述任一方法实施例提供的浮点数处理方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种浮点数处理方法,其特征在于,包括:
根据浮点数的浮点类型,确定所述浮点类型对应的共同体变量,所述共同体变量包括浮点型成员变量和整数型成员变量;
将所述浮点数的二进制数据赋值给所述共同体变量的整数型成员变量;
打印所述共同体变量的浮点型成员变量,得到所述浮点数的十进制数据。
2.根据权利要求1所述的方法,其特征在于,所述根据浮点数的浮点类型,确定所述浮点数对应的共同体变量之前,还包括:
创建各浮点类型对应的共同体变量。
3.根据权利要求2所述的方法,其特征在于,所述创建各浮点类型对应的共同体变量,包括:
对于单精度浮点数类型,创建对应的第一共同体变量,所述第一共同体变量中的整数型成员变量为整型变量,所述第一共同体变量中的浮点型成员变量为单精度浮点型。
4.根据权利要求2所述的方法,其特征在于,所述创建各浮点类型对应的共同体变量,包括:
对于双精度浮点数类型,创建对应的第二共同体变量,所述第二共同体变量中的整数型成员变量为长整型变量,所述第二共同体变量中的浮点型成员变量为双精度浮点型。
5.根据权利要求2所述的方法,其特征在于,所述创建各浮点类型对应的共同体变量,包括:
对于浮点向量类型,创建对应的第三共同体变量,其中所述浮点向量是由N个单精度浮点数排列而成的序列,其中N为正整数,N大于等于2;
所述第三共同体变量中的整数型成员变量为自定义整数类型的向量,所述自定义整数类型的向量用于存储N个整型数;
所述第三共同体变量中的浮点型成员变量为自定义浮点类型的向量,所述自定义浮点类型的向量用于存储N个单精度浮点数;
所述自定义整数类型的向量和所述自定义浮点类型的向量共用的内存地址空间用于存储所述N个单精度浮点数的二进制数据依次拼接而成的二进制数据。
6.根据权利要求5所述的方法,其特征在于,所述打印所述共同体变量的浮点型成员变量,得到所述浮点数的十进制数据,包括:
若所述共同体变量的浮点型成员变量为自定义浮点类型的向量,则依次打印所述自定义浮点类型的向量中的N个单精度浮点数的十进制数据。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述打印所述共同体变量的浮点型成员变量,得到所述浮点数的十进制数据,包括:
通过调试工具打印所述共同体变量的浮点型成员变量,得到所述浮点数的十进制数据。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述打印所述共同体变量的浮点型成员变量,得到所述浮点数的十进制数据,包括:
通过printf函数打印所述共同体变量的浮点型成员变量,得到所述浮点数的十进制数据。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括:
根据浮点数的浮点类型,确定所述浮点类型对应的共同体变量,所述共同体变量包括浮点型成员变量和整数型成员变量;
将所述浮点数的十进制数据赋值给所述共同体变量的浮点型成员变量;
打印所述共同体变量的整数型成员变量,得到所述浮点数的二进制数据。
10.一种浮点数处理装置,其特征在于,包括:
共同体处理模块,用于根据浮点数的浮点类型,确定所述浮点类型对应的共同体变量,所述共同体变量包括浮点型成员变量和整数型成员变量;
赋值模块,用于将所述浮点数的二进制数据赋值给所述共同体变量的整数型成员变量;
打印模块,用于打印所述共同体变量的浮点型成员变量,得到所述浮点数的十进制数据。
11.一种浮点数处理设备,其特征在于,包括:
处理器,存储器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序;
其中,所述处理器运行所述计算机程序时实现如权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910705343.0A CN110427172A (zh) | 2019-08-01 | 2019-08-01 | 浮点数处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910705343.0A CN110427172A (zh) | 2019-08-01 | 2019-08-01 | 浮点数处理方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110427172A true CN110427172A (zh) | 2019-11-08 |
Family
ID=68413658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910705343.0A Pending CN110427172A (zh) | 2019-08-01 | 2019-08-01 | 浮点数处理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110427172A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111142676A (zh) * | 2019-12-30 | 2020-05-12 | 歌尔股份有限公司 | 数据传输方法、装置、头戴显示设备和可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933334A (zh) * | 2005-09-15 | 2007-03-21 | 国际商业机器公司 | 从比例二进制编码十进制转换到十进制浮点的系统和方法 |
US20120124116A1 (en) * | 2010-11-17 | 2012-05-17 | Hyeong-Seok Yu | Apparatus and method for converting data between a floating-point number and an integer |
CN103164220A (zh) * | 2013-02-21 | 2013-06-19 | 北京控制工程研究所 | 一种星载计算机在轨维护所用浮点立即数的自主处理方法 |
-
2019
- 2019-08-01 CN CN201910705343.0A patent/CN110427172A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933334A (zh) * | 2005-09-15 | 2007-03-21 | 国际商业机器公司 | 从比例二进制编码十进制转换到十进制浮点的系统和方法 |
US20120124116A1 (en) * | 2010-11-17 | 2012-05-17 | Hyeong-Seok Yu | Apparatus and method for converting data between a floating-point number and an integer |
CN103164220A (zh) * | 2013-02-21 | 2013-06-19 | 北京控制工程研究所 | 一种星载计算机在轨维护所用浮点立即数的自主处理方法 |
Non-Patent Citations (2)
Title |
---|
周枫: "《BORLAND C++3.0DOS和WINDOWS编程技巧与实例下》", 31 January 1992 * |
邵国金: "《UNIX系统与软件开发》", 31 October 2013 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111142676A (zh) * | 2019-12-30 | 2020-05-12 | 歌尔股份有限公司 | 数据传输方法、装置、头戴显示设备和可读存储介质 |
CN111142676B (zh) * | 2019-12-30 | 2023-08-08 | 歌尔科技有限公司 | 数据传输方法、装置、头戴显示设备和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11698772B2 (en) | Prepare for shorter precision (round for reround) mode in a decimal floating-point instruction | |
US3871578A (en) | Data processing system for multiplying and intergerizing floating point numbers | |
CN111090628A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN102362274A (zh) | 方程的线性系统的处理 | |
CN112596697A (zh) | 使用分解的分量数字的浮点乘法硬件 | |
CN112035480A (zh) | 数据表管理方法、装置、设备及存储介质 | |
CN109582231B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
EP4064036A1 (en) | Floating-point number multiplication computation method and apparatus, and arithmetical logic unit | |
CN113424176A (zh) | 向量串搜索指令 | |
CN110427172A (zh) | 浮点数处理方法、装置、设备及计算机可读存储介质 | |
US11010135B2 (en) | Arithmetic processing device and control method of arithmetic processing device | |
CN115630595A (zh) | 逻辑电路的自动生成方法、装置、电子设备及存储介质 | |
US20040117421A1 (en) | Methods and systems for computing floating-point intervals | |
Toronto et al. | Practically accurate floating-point math | |
US5652862A (en) | Method and appartus for determining a precision of an intermediate arithmetic for converting values between a first numeric format and a second numeric format | |
CN116382782A (zh) | 向量运算方法、向量运算器、电子设备和存储介质 | |
CN113609128A (zh) | 生成数据库实体类的方法、装置、终端设备及存储介质 | |
Murillo et al. | Generating Posit-Based Accelerators With High-Level Synthesis | |
US7136891B2 (en) | Arithmetic and relational operations | |
CN115965048A (zh) | 数据处理装置、数据处理方法和电子设备 | |
Murillo Montero et al. | Generating posit-based accelerators with high-level synthesis | |
CN115965047A (zh) | 数据处理器、数据处理方法和电子设备 | |
Daumas et al. | Rounding of floating point intervals | |
CN117540669A (zh) | 数字电路的结构化数据处理方法及装置 | |
CN115951858A (zh) | 数据处理器、数据处理方法和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191108 |
|
RJ01 | Rejection of invention patent application after publication |