一种面向科学计算的浮点型数据无损压缩方法

文档序号:9306409阅读:1004来源:国知局
一种面向科学计算的浮点型数据无损压缩方法
【技术领域】
[0001]本发明属于数据处理技术领域,具体涉及一种面向科学计算的浮点型数据无损压缩方法。
【背景技术】
[0002]随着社会的日益发展,由科学研究(天文学、生物学、海洋学)、社交网络(faceb00k、QQ、人人网)、自然环境监测(暴雨、洪水、地震)等产生的数以亿计的数据呈爆炸式增长,无论在工业界还是学术界,大规模数据处理都受到火热追捧。
[0003]数据的多样性和指数级增长给数据存储和传输带来了巨大压力,严重阻碍了高性能计算在科学领域的运用和发展。数据压缩一直是人们用于解决此类问题的热点技术,寻找高效的数据压缩技术可以有效降低数据存储量和传输成本。
[0004]数据压缩按解码后的数据是否完整恢复原数据,可分为有损压缩和无损压缩。有损压缩指的是解压缩时不能精确恢复原始数据,有一定的信息损失,该方法主要用于图像、视频、音频等少量信息遗失而不会影响原有数据效果的领域。无损压缩又称为熵编码、无失真编码,其工作原理是减少或去除数据中的冗余度,且原数据可被精确恢复。
[0005]对大部分科学数据而言,任何一个微小误差都将可能引发一场灾难,所以必须采用无损压缩技术,以保证数据恢复时的完整性;同时,数据压缩速度必须十分迅速,以适应科学数据规模大、密集度高、更新快等特点。

【发明内容】

[0006]本发明的目的是提供一种面向科学计算的浮点型数据无损压缩方法,解决了浮点型数据压缩率低、压缩缓慢的问题。
[0007]本发明所采用的技术方案是,一种面向科学计算的浮点型数据无损压缩方法,具体按照以下步骤实施:
[0008]步骤1、对浮点型数据的符号域、指数域和尾数域分别映射、分别压缩,并对压缩后的数据以二进制位为单位进行存储;
[0009]步骤2、获得尾数域差值的有效数据、指数域差值和符号域,并根据IEEE754格式和参考数据,完整恢复出原始数据,
[0010]其中,参考数据是前一个被压缩数据。
[0011]本发明的特点还在于:
[0012]步骤I具体为:
[0013]步骤1.1、内存拷贝参考数据和被压缩数据,将其分别转换为4个字节的整数;
[0014]步骤1.2、根据IEEE754格式,提取出参考数据和被压缩数据的符号域、指数域和尾数域;
[0015]步骤1.3、保持被压缩数据的符号域值不变;
[0016]步骤1.4、采用减法运算得出被压缩数据与参考数据的指数域差值,当指数域差值的值较小时,标记相应的标志位;当指数域差值的值较大时,单独存储被压缩数据的指数域,并标记相应的标志位;
[0017]步骤1.5、采用减法运算得出被压缩数据与参考数据的尾数域差值,删除尾数域差值头部的连续冗余0,存储有效数据,同时标记有效数据的个数;
[0018]步骤1.6、采用位位相接的方式封装所有数据尾数域差值的有效数据位,并封装被压缩数据的符号域、指数域及各种标志位,即实现了数据的完全无损压缩。
[0019]步骤1.4中指数域差值的值较小为被压缩数据与参考数据的指数域差值为0,1,-1,对应的标记位为0,1,2 ;指数域差值的值较大为被压缩数据与参考数据的指数域差值为其他,对应的标记位为3。
[0020]步骤2具体为:
[0021]步骤2.1、根据尾数部分的标志位值确定尾数域差值的有效数据位数,并按位从尾数域的压缩数据中取出该差值;然后由IEEE754格式可知该差值头部所需的冗余O位数,并对其进行填充;最后根据参考数据的尾数值恢复出被压缩数据的尾数域;
[0022]步骤2.2、根据指数部分的标志位值,如果获得的是指数域差值,根据参考数据的指数域恢复出被压缩数据的指数域,转到步骤2.3 ;如果获得的是被压缩数据的指数域,直接转到步骤2.3 ;
[0023]步骤2.3、从压缩数据中取出被压缩数据的符号域;
[0024]步骤2.4、按照IEEE754格式,组合符号域、指数域和尾数域变成4个字节的整数,并内存映射该整数使其还原成被压缩的浮点型数据。
[0025]本发明的有益效果是:本发明一种面向科学计算的浮点型数据无损压缩方法,所采用的尾数整型法(Think Mantissa as Integer,TMI)根据浮点型数据各部分的物理含义及结构特点,对数据各部分分别映射、分别压缩,打破了传统的浮点型数据压缩方法中,强行将其按字节划分,既破坏了浮点型数据的物理含义,又使压缩率低下;再者,本发明无损压缩方法没有过多的数据预测或变换算法,从而有利于加快数据压缩速度;最后,由于任何数据在计算机中都以二进制形式表示,所以该方法的思想可推广到其它数据类型的压缩。
【附图说明】
[0026]图1是本发明无损压缩方法中数据压缩的实施例流程图;
[0027]图2是本发明无损压缩方法中数据解压缩的实施例流程图;
[0028]图3是本发明无损压缩方法与WinRAR、WinZIP的压缩率比较图;
[0029]如图4所示为本发明无损压缩方法与WinRAR、WinZIP的压缩和解压缩时间比较图。
【具体实施方式】
[0030]下面结合附图和【具体实施方式】对本发明进行详细说明。
[0031]—种面向科学计算的浮点型数据无损压缩方法,主要针对单精度浮点型数据,根据IEEE754格式,利用数据之间的高度密集性,设计出尾数整型化(Think Mantissa asInteger, TH)压缩技术,具体按照以下步骤实施:
[0032]步骤1、数据压缩:对浮点型数据的符号域、指数域和尾数域分别映射、分别压缩,并对压缩后的数据以二进制位为单位进行存储,具体步骤如下:
[0033]步骤1.1、内存拷贝参考数据和被压缩数据,将其分别转换为4个字节的整数;其中,参考数据是前一个被压缩数据;
[0034]步骤1.2、根据IEEE754格式,提取出参考数据和被压缩数据的符号域、指数域和尾数域;
[0035]步骤1.3、保持被压缩数据的符号域值不变;
[0036]步骤1.4、采用减法运算得出被压缩数据与参考数据的指数域差值,由于参考数据与被压缩数据具有极大相似性,因此该差值的值较小,因而所需要存储的比特位也较少;当指数域差值的值较小即被压缩数据与参考数据的指数域差值为0,1,-1时,标记相应的标志位,对应的标记位为0,1,2 ;当指数域差值的值较大,即被压缩数据与参考数据的指数域差值为其他值时,单独存储被压缩数据的指数域,并标记相应的标志位,对应的标记位为3 ;
[0037]步骤1.5、采用减法运算得出被压缩数据与参考数据的尾数域差值,根据数据间具有极强的相似性可知,该尾数域差值头部将产生若干连续冗余0,在存储有效数据时删除这些冗余O即可达到压缩数据的效果,存储有效数据,同时标记有效数据的个数,以便解压时完整恢复原始数据;
[0038]步骤1.6、采用位位相接的方式封装所有数据尾数域差值的有效数据位,并封装被压缩数据的符号域、指数域及各种标志位,即实现了数据的完全无损压缩。
[0039]步骤2、数据的解压缩:获得尾数域差值的有效数据、指数域差值和符号域,并根据IEEE754格式和参考数据,完整恢复出原始数据,进而满足准确、实时无损的要求,具体步骤如下:
[0040]步骤2.1、根据尾数部分的标志位值确定尾数域差值的有效数据位数,并按位从尾数域的压缩数据中取出该差值;然后由IEEE754格式可知该差值头部所需的冗余O位数,并对其进行填充;最后根据参考数据的尾数值恢复出被压缩数据的尾数域;
[0041]步骤2.2、根据指数部分的标志位值可确定被压缩数据与参考数据的指数域差值或者可直接获得被压缩数据的指数域,如果获得的是指数域差值,根据参考数据的指数域恢复出被压缩数据的指数域,转到步骤2.3 ;如果获得的是被压缩数据的指数域,直接转到步骤2.3 ;
[0042]步骤2.3、从压缩数据中取出被压缩数据的符号域;
[0043]步骤2.4、按照IEEE754格式,组合符号域、指数域和尾数域变成4个字节的整数,并内存映射该整数使其还原成被压缩的浮点型数据。
[0044]下面以具体实施例说明本发明无损压缩方法的具体操
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1