CN105634499B - 一种基于新短浮点型数据的数据转换方法 - Google Patents
一种基于新短浮点型数据的数据转换方法 Download PDFInfo
- Publication number
- CN105634499B CN105634499B CN201511029301.8A CN201511029301A CN105634499B CN 105634499 B CN105634499 B CN 105634499B CN 201511029301 A CN201511029301 A CN 201511029301A CN 105634499 B CN105634499 B CN 105634499B
- Authority
- CN
- China
- Prior art keywords
- bit
- data
- point type
- type data
- floating point
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于新短浮点型数据的数据转换方法,包括:确定数据转换的变换形式及所采用的变换算法,所述数据转换的变换形式包括但不限于压缩、解压缩、存储和传输;根据确定的变换形式采用相应的变换算法将新短浮点型数据转换为其它浮点型数据或将其它浮点型数据转换为新短浮点型数据,新短浮点型数据为8位短浮点型数据或16位短浮点型数据。本发明采用了8位短浮点型数据或16位短浮点型数据来进行数据转换,与IEEE754标准的浮点型数据相比,总位数更少,进一步加快了数据转换的速度和效率,降低数据存储量和传输成本,具有压缩率高和存储量小的优势,尤其适用于数据的有损压缩存储与传输。本发明可广泛运用于数据处理领域。
Description
技术领域
本发明涉及数据处理技术领域,尤其是一种基于新短浮点型数据的数据转换方法。
背景技术
随着社会的日益发展,由科学研究、社交网络、自然环境监测等产生的数以亿计的数据呈爆炸式增长,无论在工业界还是学术界,大规模数据处理都受到火热追捧。数据的多样性和指数级增长给数据存储和传输带来了巨大压力,严重阻碍了高性能计算在科学领域的运用和发展。
浮点数在计算机系统中是普遍存在的(从PC到超级计算机都广泛存在)。几乎每种计算机语言都有浮点数型数据。浮点数型数据的通用标准是IEEE754标准。IEEE754标准在表示浮点数时,每个浮点数均由三部分组成:符号位S (sign),指数部分E (exponent,也称为阶码部分) 和尾数部分M (mantissa)。
IEEE754标准的浮点数一般采用以下四种基本格式:
(1)单精度格式(32位):除去符号位1位后,E占8位,M占23位。
(2)扩展单精度格式:E>=11位,M>31位。
(3)双精度格式:(64位);E=11位,M=52位。
(4)扩展双精度格式:E>=15位,M>63位。
数据的转换方式包括数据压缩、解压缩、存储与传输等。对浮点型数据来说,数据的总位数决定了数据转换的效率。目前IEEE754标准的四种浮点型数据的总位数至少为32位,若能采用总位数少于32位的数据格式来表示浮点型数据,将会进一步加快数据转换的速度和效率,降低数据存储量和传输成本,这对于追求更高压缩效率的有损压缩(有损压缩指的是解压缩时不能精确恢复原始数据,有一定的信息损失,该方法主要用于图像、视频、音频等少量信息遗失而不会影响原有数据效果的领域)来说,显得尤为重要。
发明内容
为解决上述技术问题,本发明的目的在于:提供一种转换速度快、效率高、存储量少和传输成本低的,基于新短浮点型数据的数据转换方法。
本发明所采取的技术方案是:
一种基于新短浮点型数据的数据转换方法,包括:
A、确定数据转换的变换形式及所采用的变换算法,所述数据转换的变换形式包括但不限于压缩、解压缩、存储和传输;
B、根据确定的变换形式采用相应的变换算法将新短浮点型数据转换为其它浮点型数据或将其它浮点型数据转换为新短浮点型数据,所述新短浮点型数据为8位短浮点型数据或16位短浮点型数据。
进一步,所述8位短浮点型数据的数据格式为:符号位为1位,阶码部分共4位,尾数部分共3位;若阶码为0且尾数为0,则这个数的值为±0;若阶码为255且尾数为0,则这个数为无穷数;阶码为255且尾数不为0,则这个数表示非法数;负数的表示范围为[−416,−1.953× 10-3],正数的表示范围为[1.953 × 10-3,416];相对误差小于等于6.22%。
进一步,所述16位短浮点型数据的数据格式为:符号位为1位,阶码部分共8位,尾数部分共7位;若阶码为0且尾数为0,则这个数的值为±0;若阶码为15且尾数为0,则这个数为无穷数;阶码为15且尾数不为0,则这个数表示非法数;负数的表示范围为[−3.01 ×1038,−1.401298 × 10-45],正数的表示范围为[1.401298 ×10-45,3.01 ×1038];相对误差小于等于1.05%。
进一步,所述其它浮点型数据为IEEE754标准的单精度浮点型数据或双精度浮点型数据。
进一步,所述步骤B中将单精度浮点型数据转换为8位短浮点型数据或16位短浮点型数据这一步骤,其包括:
B11、将浮点型数据按照整型的数据格式进行逐位读取;
B12、利用位运算,分别获取单精度浮点型数据的符号位、阶码以及尾数部分;
B13、通过移位以及截取运算,获得单精度浮点型数据中阶码以及尾数部分压缩后的值;
B14、采用位或运算将单精度浮点型数据的符号位、阶码以及尾数部分压缩后的值合并为8位短浮点型数据或16位短浮点型数据。
进一步,所述步骤B中8位短浮点型数据转换为单精度浮点型数据这一步骤,其包括:
B21、按压缩时的数据格式从8位短浮点型数据中截取符号位S,阶码部分E和尾数部分M;
B22、按IEEE754标准的数据格式,对单精度浮点型数据进行回填,所述对单精度浮点型数据进行回填这一步骤包括:
将符号位S直接填充至单精度浮点型数据首字节位的第0位;
将尾数部分M填入单精度浮点型数据的第9位至第11位,并往单精度浮点型数据的第12位至第31位填0;
根据阶码部分E计算解压后的阶码E’ ,然后将E’的值填入单精度浮点型数据的第1位至第8位中,其中,当E=0时, E’=0;当1 ≤ E ≤254时,E’= E + 120;当E=255时, E’=255。
其中,本发明8位短浮点型数据的解压缩方法中对无穷(INF)以及非法数(NaN)的处理方法与IEEE754所定义的方法有所不同,能更加充分地利用存储空间。
进一步,所述步骤B中将16位短浮点型数据转换为单精度浮点型数据这一步骤,其包括:
B31、按压缩时的数据格式从16位短浮点型数据中截取符号位S,阶码E和尾数M;
B32、按照IEEE754标准的数据格式,对单精度浮点型数据进行回填,所述对单精度浮点型数据进行回填这一步骤包括:
将符号位S直接填充至单精度浮点型数据首字节位的第0位;
将尾数部分M填入单精度浮点型数据的第9位至第15位,并往单精度浮点型数据的第16位至第31位填0;
根据阶码部分E计算解压后的阶码E’ ,然后将E’的值填入单精度浮点型数据的第1位至第8位中,其中,E’ = E。
进一步,所述步骤B中将8位短浮点型数据转换为双精度浮点型数据这一步骤,其具体为:
先将8位短浮点型数据转换为单精度浮点型数据,然后通过强制转换将单精度浮点型数据直接转换为双精度浮点型数据;
或者先从8位短浮点型数据中截取符号位S、阶码部分E和尾数部分M,然后按照IEEE754标准的数据格式,对双精度浮点型数据进行回填,得到转换后的双精度浮点型数据,所述对双精度浮点型数据进行回填这一步骤包括:
将符号位S直接填充至单精度浮点型数据首字节位的第0位;
将尾数部分M填入单精度浮点型数据的第12位至第14位,并往双精度浮点型数据的第15位至第63位填0;
根据阶码部分E计算解压后的阶码E’ ,然后将E’的值填入双精度浮点型数据的第1位至第11位中,其中,当E=0时, E’=0;当1 ≤ E ≤ 254时,E’= E + 120;当E=255时, E’=255。
进一步,若需要将单精度浮点型数据转换为8位短浮点型数据,则采用转换公式y=f8(x) 或y=f8ex(x)将单精度浮点型数据x转化为8位短浮点型数据y;若需要将单精度浮点型数据转换为16位短浮点型数据,则采用转换公式y=f16(x) 或y=f16ex(x)将单精度浮点型数据x转化为16位短浮点型数据y,其中,函数f8(x)和函数f16(x)分别为8位短浮点型数据和16位短浮点型数据的普通版本转换函数,函数f8ex(x)和函数f16ex(x)分别为8位短浮点型数据和16位短浮点型数据的精确版本转换函数;函数f8(x)只根据单精度浮点型数据x的第9位至第11位来确定8位短浮点型数据y的尾数,而函数f8ex(x)则根据数据x的第9位和第10位来确定数据y尾数的前2位并根据数据x的第11位和第12位来确定数据y尾数的最后1位;函数f16(x)只根据单精度浮点型数据x的第9位至第15位来确定8位短浮点型数据y的尾数,而函数f16ex(x)则根据数据x的第9位至第14位来确定数据y尾数的前6位并根据数据x的第15位和第16位来确定数据y尾数的最后1位。
进一步,所述步骤B在通过压缩转换算法将其它浮点型数据转换为新短浮点型数据时还包括以下步骤:
对新短浮点型数据进行二进制格式紧凑存储,生成二进制数据文件;
登记二进制数据文件的压缩标记。
本发明的有益效果是:采用了8位短浮点型数据或16位短浮点型数据来进行数据转换,与IEEE754标准的浮点型数据相比,总位数更少,进一步加快了数据转换的速度和效率,降低数据存储量和传输成本,具有压缩率高和存储量小的优势,尤其适用于数据的有损压缩存储与传输。进一步,8位短浮点型数据的表示范围为[−416,416],相对误差小于等于6.22%;而16位短浮点型数据的表示范围为[−3.01 × 1038,3.01 ×1038],相对误差小于等于1.05%,使得新短浮点型数据在同等的存储空间条件下具有更大的表示范围和更高的精度。进一步,将单精度浮点型数据转换为8位短浮点型数据或16位短浮点型数据时,能采用精确版本转换函数来进行压缩转换,进一步提高了数据转换的精度。
附图说明
图1为本发明一种基于新短浮点型数据的数据转换方法的整体步骤流程图;
图2为本发明单精度浮点型数据转换为8位短浮点型数据的过程示意图;
图3为本发明单精度浮点型数据转换为16位短浮点型数据的过程示意图;
图4为本发明8位短浮点型数据转换为单精度浮点型数据的过程示意图;
图5为本发明16位短浮点型数据转换为单精度浮点型数据的过程示意图;
图6为本发明8位短浮点型数据解压缩为单精度浮点型数据的流程图;
图7为本发明16位短浮点型数据解压缩为单精度浮点型数据的流程图。
具体实施方式
参照图1,一种基于新短浮点型数据的数据转换方法,包括:
A、确定数据转换的变换形式及所采用的变换算法,所述数据转换的变换形式包括但不限于压缩、解压缩、存储和传输;
B、根据确定的变换形式采用相应的变换算法将新短浮点型数据转换为其它浮点型数据或将其它浮点型数据转换为新短浮点型数据,所述新短浮点型数据为8位短浮点型数据或16位短浮点型数据。
进一步作为优选的实施方式,所述8位短浮点型数据的数据格式为:符号位为1位,阶码部分共4位,尾数部分共3位;若阶码为0且尾数为0,则这个数的值为±0;若阶码为255且尾数为0,则这个数为无穷数;阶码为255且尾数不为0,则这个数表示非法数;负数的表示范围为[−416,−1.953×10-3],正数的表示范围为[1.953 ×10-3,416];相对误差小于等于6.22%。
进一步作为优选的实施方式,所述16位短浮点型数据的数据格式为:符号位为1位,阶码部分共8位,尾数部分共7位;若阶码为0且尾数为0,则这个数的值为±0;若阶码为15且尾数为0,则这个数为无穷数;阶码为15且尾数不为0,则这个数表示非法数;负数的表示范围为[−3.01×1038,−1.401298×10-45],正数的表示范围为[1.401298× 10-45,3.01 ×1038];相对误差小于等于1.05%。
进一步作为优选的实施方式,所述其它浮点型数据为IEEE754标准的单精度浮点型数据或双精度浮点型数据。
进一步作为优选的实施方式,所述步骤B中将单精度浮点型数据转换为8位短浮点型数据或16位短浮点型数据这一步骤,其包括:
B11、将浮点型数据按照整型的数据格式进行逐位读取;
B12、利用位运算,分别获取单精度浮点型数据的符号位、阶码以及尾数部分;
B13、通过移位以及截取运算,获得单精度浮点型数据中阶码以及尾数部分压缩后的值;
B14、采用位或运算将单精度浮点型数据的符号位、阶码以及尾数部分压缩后的值合并为8位短浮点型数据或16位短浮点型数据。
进一步作为优选的实施方式,所述步骤B中8位短浮点型数据转换为单精度浮点型数据这一步骤,其包括:
B21、按压缩时的数据格式从8位短浮点型数据中截取符号位S,阶码部分E和尾数部分M;
B22、按IEEE754标准的数据格式,对单精度浮点型数据进行回填,所述对单精度浮点型数据进行回填这一步骤包括:
将符号位S直接填充至单精度浮点型数据首字节位的第0位;
将尾数部分M填入单精度浮点型数据的第9位至第11位,并往单精度浮点型数据的第12位至第31位填0;
根据阶码部分E计算解压后的阶码E’ ,然后将E’的值填入单精度浮点型数据的第1位至第8位中,其中,当E=0时, E’=0;当1 ≤ E ≤ 254时,E’= E + 120;当E=255时, E’=255。
进一步作为优选的实施方式,所述步骤B中将16位短浮点型数据转换为单精度浮点型数据这一步骤,其包括:
B31、按压缩时的数据格式从16位短浮点型数据中截取符号位S,阶码E和尾数M;
B32、按照IEEE754标准的数据格式,对单精度浮点型数据进行回填,所述对单精度浮点型数据进行回填这一步骤包括:
将符号位S直接填充至单精度浮点型数据首字节位的第0位;
将尾数部分M填入单精度浮点型数据的第9位至第15位,并往单精度浮点型数据的第16位至第31位填0;
根据阶码部分E计算解压后的阶码E’ ,然后将E’的值填入单精度浮点型数据的第1位至第8位中,其中,E’ = E。
进一步作为优选的实施方式,所述步骤B中将8位短浮点型数据转换为双精度浮点型数据这一步骤,其具体为:
先将8位短浮点型数据转换为单精度浮点型数据,然后通过强制转换将单精度浮点型数据直接转换为双精度浮点型数据;
或者先从8位短浮点型数据中截取符号位S、阶码部分E和尾数部分M,然后按照IEEE754标准的数据格式,对双精度浮点型数据进行回填,得到转换后的双精度浮点型数据,所述对双精度浮点型数据进行回填这一步骤包括:
将符号位S直接填充至单精度浮点型数据首字节位的第0位;
将尾数部分M填入单精度浮点型数据的第12位至第14位,并往双精度浮点型数据的第15位至第63位填0;
根据阶码部分E计算解压后的阶码E’ ,然后将E’的值填入双精度浮点型数据的第1位至第11位中,其中,当E=0时, E’=0;当1 ≤ E ≤ 254时,E’= E + 120;当E=255时, E’=255。
进一步作为优选的实施方式,若需要将单精度浮点型数据转换为8位短浮点型数据,则采用转换公式y=f8(x) 或y=f8ex(x)将单精度浮点型数据x转化为8位短浮点型数据y;若需要将单精度浮点型数据转换为16位短浮点型数据,则采用转换公式y=f16(x) 或y=f16ex(x)将单精度浮点型数据x转化为16位短浮点型数据y,其中,函数f8(x)和函数f16(x)分别为8位短浮点型数据和16位短浮点型数据的普通版本转换函数,函数f8ex(x)和函数f16ex(x)分别为8位短浮点型数据和16位短浮点型数据的精确版本转换函数;函数f8(x)只根据单精度浮点型数据x的第9位至第11位来确定8位短浮点型数据y的尾数,而函数f8ex(x)则根据数据x的第9位和第10位来确定数据y尾数的前2位并根据数据x的第11位和第12位来确定数据y尾数的最后1位;函数f16(x)只根据单精度浮点型数据x的第9位至第15位来确定8位短浮点型数据y的尾数,而函数f16ex(x)则根据数据x的第9位至第14位来确定数据y尾数的前6位并根据数据x的第15位和第16位来确定数据y尾数的最后1位。
进一步作为优选的实施方式,所述步骤B在通过压缩转换算法将其它浮点型数据转换为新短浮点型数据时还包括以下步骤:
对新短浮点型数据进行二进制格式紧凑存储,生成二进制数据文件;
登记二进制数据文件的压缩标记。
下面结合说明书附图和具体实施例对本发明作进一步详细说明。
实施例一
参照图1-7,本发明的第一实施例:
本发明提出了两种新型的短浮点型数据格式,一种是8位格式,另一种是16位格式,并设计了这两种新型的短浮点型数据与其它类型的浮点型数据之间的转换方法。在同等空间条件下,本发明的新短浮点型数据为浮点类型数据提供了更大的表达范围和更高的精度,尤其适用于数据的有损压缩存储与传输。
下面以IEEE754标准的单精度浮点类型数据为参照,从新短浮点型数据的定义、数据之间的转换和效益三个方面,分别说明本发明的技术方案,具体如下:
(一)新短浮点型数据的定义
与IEEE754标准的浮点型数据比较,本发明的新短浮点型数据格式仍旧保留了符号位,阶码及尾数部分,不同之处在于各部分的数据位长度不同。本发明定义了8位和16位两种类型的短浮点型数据格式。该新短浮点型数据的具体定义如下:
定义1:INF为无穷数,NaN为非法数,它们的阶码和尾数均为无符号整数。
定义2:8位短浮点型数据的格式为:符号位为1位,阶码部分共4位,尾数部分共3位;阶码为0且尾数为0,则这个数的值为±0(正负号由符号位确定);阶码为255且尾数为0,则这个数的值为±∞(正负号由符号位确定);阶码为255且尾数不为0,则这个数表示值NaN。
该8位短浮点型数据格式的值域为:
负数,表示范围从−416 ( 其二进制科学计数法表示方式为1.101× 27) 到−1.953 × 10-3(其二进制科学计数法表示方式为0.001×2-6);
正数,表示范围从1.953 × 10-3 (其二进制科学表示方式为0.001 × 2-6)到416(其二进制科学计数法表示方式为1.101×27)。
定义3:16位短浮点型数据的格式为:符号位为1位,阶码部分共8位,尾数部分共7位;阶码为0且尾数为0,则这个数的值为±0(正负号由符号位确定);阶码为15且尾数为0,则这个数的值为±∞(正负号由符号位确定);阶码为15且尾数不为0,则这个数表示值NaN。
16位短浮点型数据格式的值域为:
负数,表示范围从−3.01×1038 (其二进制科学计数法表示方式为1.1111111×2128) 到−1.401298×10-45(其二进制科学计数法表示方式为0.0000001× 2-126);
正数,表示范围从1.401298×10-45(其二进制科学计数法表示方式为1.0000001×2-126) 到3.01×1038 (其二进制科学计数法表示方式为1.1111111× 2128)。
(二)新短浮点型数据与其它浮点型数据的转换
根据新短浮点型数据格式的特殊性,可将其应用于数据压缩、存储和传输等领域。根据应用的需要,也可对压缩数据进行解压。本发明提供了短浮点型数据与IEEE 754标准的浮点数据之间的转换方法,分为新短浮点型数据的压缩变换和解压变换这两大过程。具体的数据转换过程如下:
1.新短浮点型数据的压缩过程
由IEEE 754标准,可以得知单精度浮点数由符号位、阶码和尾数三部分构成。按应用需求,32位单精度浮点数可转换成8位或16位短浮点型数据,也可认为是32位单精度浮点数压缩为8位或16位短浮点型数据。具体的压缩过程为:
(1)确定新短浮点型数据压缩的变换形式并进行压缩转换。
根据实际的精度和数值范围需求,可执行以下两种转换中的任一种:
1)8位短浮点型数据格式的转换
8位短浮点型数据格式的数据范围为[−416, 416],相对误差在6.22%以内,用4位阶码表示指数的范围,3位尾数表示小数部分的精度,1位符号位来存储符号。故将单精度浮点型数据压缩为8位短浮点型数据的过程如下:
首先,将浮点型数据按照整型的数据格式进行逐位读取;
接着,利用位运算,分别获取单精度浮点型数据的符号位(第0位),阶码(第1-8位)以及尾数部分(第9-31位);
再接着,通过移位以及截取运算,获得精度浮点型数据中阶码以及尾数部分的压缩值;
最后,根据位或运算,将单精度浮点型数据的符号位、阶码以及尾数部分压缩后的值合并为压缩后的8位短浮点型数据,如图2所示。
2)16位短浮点型数据格式的转换
16位短浮点型数据格式的数据范围为[−3.01 × 1038, 3.01 × 1038],相对误差在1.05%以内,用8位阶码表示指数范围大小,7位尾数表示小数部分的精度,1位符号位来存储符号。故将单精度浮点型数据压缩为8位短浮点型数据的过程如下:
首先,将浮点型数据按照整型的数据格式进行逐位读取;
接着,利用位运算,分别获取单精度浮点型数据的符号位(第0位),阶码(第1-8位)以及尾数部分(第9-31位);
再接着,通过移位以及截取运算,获得精度浮点型数据中阶码以及尾数部分的压缩值;
最后,根据位或运算,将单精度浮点型数据的符号位、阶码以及尾数部分压缩后的值合并为压缩后的8位短浮点型数据,如图3所示。
(2)生成二进制数据文件(该过程为可选的过程)。
本发明支持二进制格式紧凑存储压缩后的新短浮点型数据。若需要对压缩后的新短浮点型数据进行存储,则需依据选定的8位或16位短浮点型数据格式的压缩算法,对压缩后的数据进行二进制格式紧凑存储。
(3)登记压缩标志(该过程为可选的过程)。
本发明若需要将数据压缩成二进制文件进行存储,则需要对压缩标志进行登记;若仅在内存当中实现转换,则无需进行标记登记。在生成的二进制文件的情况下,本发明可将压缩方法写入压缩标志中,以方便后续的数据解压缩及数据恢复过程。
(4)进一步提高数据转换精度。
在不增加存储空间的前提下,本发明进一步提高数据转换精度的方法如下:
若需要将单精度浮点型数据转换为8位短浮点型数据,则采用转换公式y=f8(x)或y=f8ex(x)将单精度浮点型数据x转化为8位短浮点型数据y;若需要将单精度浮点型数据转换为16位短浮点型数据,则采用转换公式y=f16(x) 或y=f16ex(x)将单精度浮点型数据x转化为16位短浮点型数据y,其中,函数f8(x)和函数f16(x)分别为8位短浮点型数据和16位短浮点型数据的普通版本转换函数,函数f8ex(x)和函数f16ex(x)分别为8位短浮点型数据和16位短浮点型数据的精确版本转换函数;函数f8(x)只根据单精度浮点型数据x的第9位至第11位来确定8位短浮点型数据y的尾数,而函数f8ex(x)则根据数据x的第9位和第10位来确定数据y尾数的前2位并根据数据x的第11位和第12位来确定数据y尾数的最后1位;函数f16(x)只根据单精度浮点型数据x的第9位至第15位来确定8位短浮点型数据y的尾数,而函数f16ex(x)则根据数据x的第9位至第14位来确定数据y尾数的前6位并根据数据x的第15位和第16位来确定数据y尾数的最后1位。在采用精确版本转换为8位短浮点型数据时,通过尾数截取y的高4位判断后进行第7位(也就是尾数的第3位)的舍入,而非普通版本的直接截断y的高3位进行舍入,这样便降低了转换时的系统误差,如图2所示。在采用精确版本转换为16位短浮点型数据时,通过尾数截取y的高8位判断后进行第15位(也就是尾数的第7位)的舍入,而非普通版本的直接截取高7位进行舍入,这样便降低了转换时的系统误差,如图3和表1所示。从表1可以得出,对于浮点型数据采用精确版本的压缩方法比使用普通版本的方法具有更精确的压缩效果。
表1不同数据类型的精度
表1中,ulp作为浮点型数据的舍入衡量标准,根据所代表数据的不同,ulp具有不同的值。一般地,ulp用来表示该浮点数据的最后地方的值,即尾数的最精确值乘以其指数值,可以将ulp看成是关于x的函数,即ulp(x),函数值随着x的值不同而变化。
.新短浮点型数据的解压缩过程
新短浮点型数据的解压缩过程与压缩过程相对应,下面分别就8位短浮点型数据格式和16位短浮点型数据格式的解压过程进行说明。
(1)8位短浮点型数据解压缩至32位单精度浮点数。
参见图4和图6,8位短浮点型数据解压缩至32位单精度浮点数过程如下:
1) 按压缩时的数据格式从8位短浮点型数据中截取符号位S,阶码部分E和尾数部分M。
2) 按IEEE754标准的数据格式,对32位浮点数进行回填,回填的过程为:
a)将符号位S直接填充至首字节位的0位,即第0位。
b)将8位短浮点型数的尾数部分M填入32位浮点数的第9位至第11位;从第12位开始至第31位填0,如图4所示,共填20位0值。
c) 根据阶码部分E计算解压后的阶码E’ ,然后将E’的值填入单精度浮点型数据的第1位至第8位中,其中,当E=0时, E’=0;当1 ≤E ≤ 254时,E’= E + 120;当E=255时,E’=255。阶码E和E’均被看作无符号整数。
(2)8位短浮点型数据解压缩至32位单精度浮点数。
参见图5和图7,16位短浮点型数据解压缩至32位单精度浮点数过程如下:
1)按压缩时的数据格式从16位短浮点型数据中截取符号位S,阶码E和尾数M。
2)按照IEEE754标准的数据格式,对32位单精度浮点数进行回填,回填的过程为:
a)将符号位S直接填充至32位浮点数的首字节第0位。
b)将16位短浮点型数的尾数部分M填入32位浮点数的第9位至第15位;从第16位开始至第31位填0,如图5所示,共填16个0值。
c) 根据阶码部分E计算解压后的阶码E’ ,然后将E’的值填入单精度浮点型数据的第1位至第8位中,其中,E’ = E,阶码E和E’均被看作无符号整数。
(3)8位短浮点型数解压缩至64位双精度浮点数。
若要将8位短浮点型数据解压缩至64位浮点数,有以下两种方式:
方式1:先将8位浮点解压缩至32位浮点数,再用强制转换将32位浮点数直接转换为64位。
方式2: 用类似于转换为32位浮点数的方式,8位数据中截取符号位S,阶码部分E和尾数部分M,并按IEEE754格式,回填至64位双精度浮点数中。
(三)本实施例的效果
本实施例提出了两种新型的短浮点型数据格式,分别是8位短浮点型数据格式和16位短浮点型数据格式,并详细说明了该新短浮点型数据与其他浮点数据之间的转换过程。本实施例具有以下优点:
(1)极大地提高了数据的表示范围,在同等的存储空间条件下具有更大的表示范围和更高的精度。
1)8位短浮点型数据的值域为:
负数:表示范围从−416 ( 即1.101 × 27) 到 −1.953× 10-3 (即0.001 × 2-6);
正数:表示范围从1.953× 103 (即0.001× 2-6) 到416 (即1.101× 27)。
2)16位短浮点型数据的值域为:
负数:表示范围从−3.01 × 1038 (即1.1111111× 2128) 到 −1.401298× 10-45(即1.0000001× 2-126);
正数:表示范围从 1.401298× 10-45(即1.0000001× 2-126) 到3.01 ×1038 (即1.1111111× 2128)。
(2)适用于浮点型数据的压缩、存储与传输,具有压缩率高、存储量小的优势。浮点型数据数据可以由IEEE 754标准的32位或64位压缩为16位或8位。
(3)无需变更数据的类型,对系统也没有特殊要求。数据的压缩与解压,只需利用系统的IEEE 754标准格式进行简单位处理即可完成,操作过程简单,处理效率高。
实施例二
本实施例从一个图片中取出部分数据,组成一个512*512大小的IEEE 754标准单精度浮点矩阵,并将该数据导出保存为data.txt文件,可以得出该矩阵的容量大小为1024KB。在误差允许的情况下,可以对矩阵容量进行32位到8位短短浮点型数据的压缩,对该单精度矩阵进行整体压缩后致密排列,由于矩阵中的每个元素由32位压缩至8位,压缩后的8位短短浮点型数据占用的空间变为原来的1/4,将压缩后的数据保存为data1.bin文件,则压缩后的矩阵容量为256KB。由此可见,采用本发明的方法,可以极大增加压缩率和降低存储空间。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (3)
1.一种基于新短浮点型数据的数据转换方法,其特征在于:包括:
A、确定数据转换的变换形式及所采用的变换算法,所述数据转换的变换形式包括但不限于压缩、解压缩、存储和传输;
B、根据确定的变换形式采用相应的变换算法将新短浮点型数据转换为其它浮点型数据或将其它浮点型数据转换为新短浮点型数据,所述新短浮点型数据为8位短浮点型数据或16位短浮点型数据;
所述8位短浮点型数据的数据格式为:符号位为1位,阶码部分共4位,尾数部分共3位;若阶码为0且尾数为0,则这个数的值为±0;若阶码为255且尾数为0,则这个数为无穷数;阶码为255且尾数不为0,则这个数表示非法数;负数的表示范围为[-416,-1.953×10-3],正数的表示范围为[1.953×10-3,416];相对误差小于等于6.22%;
所述16位短浮点型数据的数据格式为:符号位为1位,阶码部分共8位,尾数部分共7位;若阶码为0且尾数为0,则这个数的值为±0;若阶码为15且尾数为0,则这个数为无穷数;阶码为15且尾数不为0,则这个数表示非法数;负数的表示范围为[-3.01×1038,-1.401298×10-45],正数的表示范围为[1.401298×10-45,3.01×1038];相对误差小于等于1.05%;
所述其它浮点型数据为IEEE754标准的单精度浮点型数据或双精度浮点型数据;
所述步骤B中将单精度浮点型数据转换为8位短浮点型数据或16位短浮点型数据这一步骤,其包括:
B11、将浮点型数据按照整型的数据格式进行逐位读取;
B12、利用位运算,分别获取单精度浮点型数据的符号位、阶码以及尾数部分;
B13、通过移位以及截取运算,获得单精度浮点型数据中阶码以及尾数部分压缩后的值;
B14、采用位或运算将单精度浮点型数据的符号位、阶码以及尾数部分压缩后的值合并为8位短浮点型数据或16位短浮点型数据;
所述步骤B中8位短浮点型数据转换为单精度浮点型数据这一步骤,其包括:
B21、按压缩时的数据格式从8位短浮点型数据中截取符号位S,阶码部分E和尾数部分M;
B22、按IEEE754标准的数据格式,对单精度浮点型数据进行回填,所述对单精度浮点型数据进行回填这一步骤包括:
将符号位S直接填充至单精度浮点型数据首字节位的第0位;
将尾数部分M填入单精度浮点型数据的第9位至第11位,并往单精度浮点型数据的第12位至第31位填0;
根据阶码部分E计算解压后的阶码E’,然后将E’的值填入单精度浮点型数据的第1位至第8位中,其中,当E=0时,E’=0;当1≤E≤254时,E’=E+120;当E=255时,E’=255;
所述步骤B中将16位短浮点型数据转换为单精度浮点型数据这一步骤,其包括:
B31、按压缩时的数据格式从16位短浮点型数据中截取符号位S,阶码E和尾数M;
B32、按照IEEE754标准的数据格式,对单精度浮点型数据进行回填,所述对单精度浮点型数据进行回填这一步骤包括:
将符号位S直接填充至单精度浮点型数据首字节位的第0位;
将尾数部分M填入单精度浮点型数据的第9位至第15位,并往单精度浮点型数据的第16位至第31位填0;
根据阶码部分E计算解压后的阶码E’,然后将E’的值填入单精度浮点型数据的第1位至第8位中,其中,E’=E;
所述步骤B中将8位短浮点型数据转换为双精度浮点型数据这一步骤,其具体为:
先将8位短浮点型数据转换为单精度浮点型数据,然后通过强制转换将单精度浮点型数据直接转换为双精度浮点型数据;
或者先从8位短浮点型数据中截取符号位S、阶码部分E和尾数部分M,然后按照IEEE754标准的数据格式,对双精度浮点型数据进行回填,得到转换后的双精度浮点型数据,所述对双精度浮点型数据进行回填这一步骤包括:
将符号位S直接填充至单精度浮点型数据首字节位的第0位;
将尾数部分M填入单精度浮点型数据的第12位至第14位,并往双精度浮点型数据的第15位至第63位填0;
根据阶码部分E计算解压后的阶码E’,然后将E’的值填入双精度浮点型数据的第1位至第11位中,其中,当E=0时,E’=0;当1≤E≤254时,E’=E+120;当E=255时,E’=255。
2.根据权利要求1所述的一种基于新短浮点型数据的数据转换方法,其特征在于:
若需要将单精度浮点型数据转换为8位短浮点型数据,则采用转换公式y=f8(x)或y=f8ex(x)将单精度浮点型数据x转化为8位短浮点型数据y;若需要将单精度浮点型数据转换为16位短浮点型数据,则采用转换公式y=f16(x)或y=f16ex(x)将单精度浮点型数据x转化为16位短浮点型数据y,其中,函数f8(x)和函数f16(x)分别为8位短浮点型数据和16位短浮点型数据的普通版本转换函数,函数f8ex(x)和函数f16ex(x)分别为8位短浮点型数据和16位短浮点型数据的精确版本转换函数;函数f8(x)只根据单精度浮点型数据x的第9位至第11位来确定8位短浮点型数据y的尾数,而函数f8ex(x)则根据数据x的第9位和第10位来确定数据y尾数的前2位并根据数据x的第11位和第12位来确定数据y尾数的最后1位;函数f16(x)只根据单精度浮点型数据x的第9位至第15位来确定8位短浮点型数据y的尾数,而函数f16ex(x)则根据数据x的第9位至第14位来确定数据y尾数的前6位并根据数据x的第15位和第16位来确定数据y尾数的最后1位。
3.根据权利要求1或2所述的一种基于新短浮点型数据的数据转换方法,其特征在于:所述步骤B在通过压缩转换算法将其它浮点型数据转换为新短浮点型数据时还包括以下步骤:
对新短浮点型数据进行二进制格式紧凑存储,生成二进制数据文件;
登记二进制数据文件的压缩标记。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511029301.8A CN105634499B (zh) | 2015-12-30 | 2015-12-30 | 一种基于新短浮点型数据的数据转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511029301.8A CN105634499B (zh) | 2015-12-30 | 2015-12-30 | 一种基于新短浮点型数据的数据转换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105634499A CN105634499A (zh) | 2016-06-01 |
CN105634499B true CN105634499B (zh) | 2020-12-01 |
Family
ID=56049108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511029301.8A Active CN105634499B (zh) | 2015-12-30 | 2015-12-30 | 一种基于新短浮点型数据的数据转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105634499B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108459969B (zh) * | 2018-02-28 | 2020-08-04 | 南京邮电大学 | 一种64位多核服务器内数据存储及传输方法 |
CN108416445B (zh) * | 2018-03-13 | 2022-04-29 | 杭州思源信息技术股份有限公司 | 一种量子实信号的存储与量子线路实现的设计方法 |
US10592208B2 (en) * | 2018-05-07 | 2020-03-17 | International Business Machines Corporation | Very low precision floating point representation for deep learning acceleration |
US10963219B2 (en) | 2019-02-06 | 2021-03-30 | International Business Machines Corporation | Hybrid floating point representation for deep learning acceleration |
CN110825323B (zh) * | 2019-10-25 | 2023-04-11 | 上海钒钛智能科技有限公司 | 浮点数数据的存储、读取方法和计算机可读存储介质 |
CN110888623B (zh) * | 2019-11-25 | 2021-11-23 | 集美大学 | 数据转换方法、乘法器、加法器、终端设备及存储介质 |
CN113126954B (zh) * | 2019-12-31 | 2024-04-09 | 华为技术有限公司 | 浮点数乘法计算的方法、装置和算术逻辑单元 |
CN111313906B (zh) * | 2020-03-03 | 2023-11-07 | 南京大学 | 一种浮点数的转换电路 |
CN111404907B (zh) * | 2020-03-10 | 2022-04-22 | 桂林电子科技大学 | 一种基于ieee754格式的数据压缩传输方法 |
CN112671411B (zh) * | 2020-12-29 | 2023-04-18 | 中山大学 | 一种基于ieee 754和posit的浮点数据格式的双向转换电路 |
CN113254259B (zh) * | 2021-05-10 | 2024-03-22 | 桂林电子科技大学 | 一种用于改善低精度浮点数传输效率的方法 |
CN117200802A (zh) * | 2022-12-28 | 2023-12-08 | 山东华科信息技术有限公司 | 用于电网边缘计算层的数据压缩系统 |
CN116208170B (zh) * | 2023-03-01 | 2023-10-27 | 山东华科信息技术有限公司 | 分布式能源并网监测的数据解压缩系统、方法及其设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1437738A (zh) * | 2000-01-03 | 2003-08-20 | 埃菲克塔技术股份有限公司 | 数据发送和存储的有效且无损耗转换 |
US20060290539A1 (en) * | 2005-06-23 | 2006-12-28 | 1Stworks Corporation | Modeling for enumerative encoding |
US20070040711A1 (en) * | 2005-08-22 | 2007-02-22 | Streaming Networks (Pvt.) Ltd. | Method and system for fast context based adaptive binary arithmetic coding |
CN101923569A (zh) * | 2010-07-09 | 2010-12-22 | 南京朗坤软件有限公司 | 一种实时数据库的结构类型数据的存储方法 |
CN105024702A (zh) * | 2015-07-08 | 2015-11-04 | 西安理工大学 | 一种面向科学计算的浮点型数据无损压缩方法 |
-
2015
- 2015-12-30 CN CN201511029301.8A patent/CN105634499B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1437738A (zh) * | 2000-01-03 | 2003-08-20 | 埃菲克塔技术股份有限公司 | 数据发送和存储的有效且无损耗转换 |
US20060290539A1 (en) * | 2005-06-23 | 2006-12-28 | 1Stworks Corporation | Modeling for enumerative encoding |
US20070040711A1 (en) * | 2005-08-22 | 2007-02-22 | Streaming Networks (Pvt.) Ltd. | Method and system for fast context based adaptive binary arithmetic coding |
CN101923569A (zh) * | 2010-07-09 | 2010-12-22 | 南京朗坤软件有限公司 | 一种实时数据库的结构类型数据的存储方法 |
CN105024702A (zh) * | 2015-07-08 | 2015-11-04 | 西安理工大学 | 一种面向科学计算的浮点型数据无损压缩方法 |
Non-Patent Citations (2)
Title |
---|
DCS模拟量数据的分部压缩方法;李焕 等;《电子测试》;20130615;第52-53页 * |
基于Surfel点云数据的压缩算法;王鹏杰 等;《计算机应用研究》;20081115;第25卷(第11期);第3471-3472页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105634499A (zh) | 2016-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105634499B (zh) | 一种基于新短浮点型数据的数据转换方法 | |
CN107451658B (zh) | 浮点运算定点化方法及系统 | |
US7685214B2 (en) | Order-preserving encoding formats of floating-point decimal numbers for efficient value comparison | |
US9804823B2 (en) | Shift significand of decimal floating point data | |
US9851945B2 (en) | Bit remapping mechanism to enhance lossy compression in floating-point applications | |
CN105468331B (zh) | 独立的浮点转换单元 | |
US9608662B2 (en) | Apparatus and method for converting floating-point operand into a value having a different format | |
Rajaraman | IEEE standard for floating point numbers | |
CN106549673B (zh) | 一种数据压缩方法及装置 | |
US8874630B2 (en) | Apparatus and method for converting data between a floating-point number and an integer | |
EP3674883A1 (en) | Multiplication circuit, system on chip, and electronic device | |
GB2600358A (en) | Processor and system to manipulate floating point and integer values in computations | |
MX2011003914A (es) | Metodo y aparato para comprimir y descomprimir registros de datos. | |
WO2022052625A1 (zh) | 一种定点与浮点转换器、处理器、方法以及存储介质 | |
US9143159B2 (en) | DPD/BCD to BID converters | |
CN114640354A (zh) | 数据压缩方法、装置、电子设备及计算机可读存储介质 | |
US20210044303A1 (en) | Neural network acceleration device and method | |
US6240431B1 (en) | Decompression of limited range floating point numbers | |
US20060179098A1 (en) | System and method for reduction of leading zero detect for decimal floating point numbers | |
JPWO2013190690A1 (ja) | 符号化装置、復号装置、符号化方法、符号化プログラム、復号方法および復号プログラム | |
CN114692077A (zh) | 一种矩阵计算装置、方法、系统、电路、芯片及设备 | |
WO2021143634A1 (zh) | 算术编码器及实现算术编码的方法和图像编码方法 | |
CN116841500A (zh) | 一种浮点数的处理方法及相关设备 | |
KR102281047B1 (ko) | 4개의 입력 내적 회로를 사용하는 삼각 함수 계산 | |
CN111313906A (zh) | 一种浮点数的转换电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |