一种基于计算机高精度计算的数据存储及读取方法转让专利

申请号 : CN202110240128.5

文献号 : CN112905125B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴玉伟

申请人 : 中电普信(北京)科技发展有限公司

摘要 :

本发明提供了一种基于计算机高精度计算的数据存储及读取方法,包括:步骤1:将高精度数据转换为特定形式;步骤2:基于所述特定形式,确定有效位数字,并将所述有效位数字以预设个数字为单位,从左到右按照预设数值范围分配存储空间并存储数值;步骤3:获取所述特定形式中的符号以及指数值信息并进行存储;步骤4:基于所述步骤2‑3,建立存储结构;步骤5:基于所述存储结构,将存储后的所述高精度数据进行读取。可以极大的减少存储空间,提高系统效率,并且不丢失数据精度。

权利要求 :

1.一种基于计算机高精度计算的数据存储及读取方法,其特征在于,包括:步骤1:将高精度数据转换为特定形式;

步骤2:基于所述特定形式,确定有效位数字,并将所述有效位数字以预设个数字为单位,从左到右按照预设数值范围分配存储空间并存储数值;

步骤3:获取所述特定形式中的符号以及指数值信息并进行存储;

步骤4:基于所述步骤2‑3,建立存储结构;

步骤5:基于所述存储结构,将存储后的所述高精度数据进行读取;

步骤51:读取所述存储结构的第一字节值s,其中,以预设数值x标识当前读取的实际存储空间比特位数,其中,预设数据x的初始值为0;

步骤52:继续读取指定比特位数m,获取标识值t,并将所述预设数值x增加m比特位;

步骤53:基于所述标识值t,确定需要读取后续的比特位数以及所述预设数值x需要增加的第三设定值;

其中,所述第三设定值由所述需要读取后续的比特位数决定;

将所述标识值t与第二标准数值进行比较;

若所述标识值t小于或等于所述第二标准数值时,基于所述后续的比特位数,获取数值V,并将所述数值V作为读取值;

若所述标识值t大于所述第二标准数值时,则基于所述后续的比特位数,获取数值V,同时,将第一设定值与所述数值V进行第二做差运算,且第二做差结果作为读取值;

步骤54:将所述预设数值x与所述第三设定值进行求和运算,并获取第二求和结果,并将所述第二求和结果作为所述预设数值x的值;

步骤55:判断所述第二求和结果是否等于指数需要的比特位数;

若等于,则所述高精度数据中的所述有效位数字部分读取完毕;

否则,重复步骤52‑54,直至完成对所述高精度数据中所述有效位数字的读取;

步骤57:对所述有效位数字读取完毕时,继续读取1比特位,获取所述高精度数据指数值的正负,其中,0标识正数,1标识负数;

步骤58:继续读取所述指数值所对应的分配位数,获取所述指数值,并将所述指数值与第二设定值进行第三做差运算,其中,第三做差结果即为所述高精度数据的真实指数值;

步骤59:基于所述高精度数据的有效位数字以及真实指数值,完成对所述高精度数据的读取。

2.根据权利要求1所述的一种基于计算机高精度计算的数据存储及读取方法,其特征在于,n

所述特定形式为:0.a*10 ,其中,a为有效位数字的正整数,且a的最高位数字不为0;n表示指数,且n为正整数或负整数。

3.根据权利要求1所述的一种基于计算机高精度计算的数据存储及读取方法,其特征在于,在步骤2中,基于所述特定形式,确定有效位数字,将所述有效位数字以预设个数字为单位,从左到右按照预设数值范围分配存储空间并存储数值的具体步骤,包括:将所述有效位数字以预设个数字为单位从左到右进行分组,并获取子分组数值;

基于所述子分组数值的大小确定所述子分组数值所对应的数值范围;

判断所述数值范围的值是否大于第一标准数值;

若所述数值范围的值全都小于或等于所述第一标准数值,将所述子分组数值作为存储数值进行二进制数据化;

否则,获取第一设定值,并将所述第一设定值与所述子分组数值进行第一做差运算,同时,将第一做差结果作为存储数值进行二进制数据化;

基于所述数值范围确定所述存储数值的存储标识值、再分配位数;

同时,根据所述再分配位数,并基于二进制化后的结果,获取对应的有效位数字存储结构。

4.根据权利要求1所述的一种基于计算机高精度计算的数据存储及读取方法,其特征在于,基于所述步骤3,对所述特定形式中的符号以及指数值信息进行存储的具体步骤,包括:步骤31:获取指数值信息,并基于所述指数值信息确定所述指数值的数值范围;

步骤32:根据所述指数值的数值范围获取指数值所对应的分配位数,同时,将所述指数值与第二设定值进行第一求和运算,并将第一求和结果作为存储值;

其中,所述第二设定值由所述指数值所对应的分配位数决定;

步骤32:将所述存储值进行二进制数据化;

步骤33:根据所述二进制数据化的结果以及所述指数值所对应的分配位数获取对应的指数存储结构。

5.根据权利要求4所述的一种基于计算机高精度计算的数据存储及读取方法,其特征在于,对所述存储值按照所述分配位数进行存储,还包括:以1字节为最小存储粒度进行存储,当最后不足分配位数时,以0补齐,其中,符号以1比特位存储,0标识正数,1标识负数;

同时,在所述存储结构的最高位上增加一个字节存储空间。

6.根据权利要求1所述的一种基于计算机高精度计算的数据存储及读取方法,其特征在于,所述步骤5:基于所述存储结构,将存储后的所述高精度数据进行读取后,对所述高精度数据进行传输,具体工作过程包括:基于数据划分方法,将所述高精度数据划分为多个子数组,对每个子数组中的数据进行二进制化,获取子数组数据长度;

基于所述子数组数据长度匹配所述子数组中所述高精度数据所对应的编码序号;

根据所述子数组数据长度以及所述编码序号确定编码表格,并将所述子数组中的高精度数据按照所述编码表格进行编码,并获取编码结果;

基于所述编码结果,获取所述子数组的编码矩阵,并对所述编码矩阵进行计算,获取计算结果;

基于所述计算结果,确定所述子数组的数据标识,同时,基于所述数据标识,确定数组聚合参数;

其中,所述数组聚合参数包括所述子数组的数据标识以及所述数组中的关键字段;

基于所述数组聚合参数,将每个数组与其上一数组依次进行聚合;

将聚合好后的数组执行数组压缩,并生成压缩数组;

调用预设约束方式对所述压缩数组的传输方式进行约束,将所述压缩数组按照所述传输方式进行传输;

同时,当所述压缩数组到达指定数据库时,对所述压缩数组通过安全校验运算获取数组校验值;

将所述指定数据库中的数据校验值与所述数组校验值进行比较,判断所述压缩数组是否符合安全度标准;

若所述数据校验值与所述数组校验值不一致时,则判定所述压缩数组不符合所述安全度标准,同时,阻止所述压缩数组的传输;

否则,判定所述压缩数组符合安全度标准,并对所述压缩数组进行解压缩处理,提取数组,完成对所述高精度数据的传输。

7.根据权利要求1所述的一种基于计算机高精度计算的数据存储及读取方法,其特征在于,所述步骤2,还包括:基于所述特定形式,确定有效位数字,并对所述有效位数字进行检测,获取所述有效位数字的失误率,同时,基于所述有效位数字的失误率,计算所述有效位数字存储的准确度,具体步骤包括:对所述有效位数字进行检测,并确定数据干扰因子;

获取有效位数字所占空间长度,并基于所述有效位数字所占空间长度,确定所述有效位数字需要的检测时间;

基于所述有效位数字所占空间长度、检测时间以及数据干扰因子,计算所述有效位数字的失误率;

‑5

其中,η表示所述有效位数字的失误率;μ表示数据干扰因子,且取值范围为(1.2*10 ,‑3

3.6*10 );v表示对所述有效位数字进行检测的检测速度;T表示对所述有效位数字进行检测的检测时间;σ表示所述有效位数字中存在的数据误差系数;δ表示在对所述有效位数字‑3 ‑2进行检测时存在的漏检因子,且取值范围为(0.25*10 ,1.8*10 );m表示所述有效位数字的方差值;ξ表示所述有效位数字的数字重复率;l表示所述有效位数字所占空间长度;f表示对所述有效位数字进行检测的检测频率;e表示自然常数;

基于所述有效位数字的失误率,计算所述有效位数字存储的准确度;

其中,λ表示所述有效位数字存储的准确度;U表示存储空间的总容量;k表示存储到预定位置的数据量;k0表示未存储到预定位置的数据量;q表示存储在预定位置的数据是准确概率;β表示存储位置系数;u表示有效位数字的容量;

基于将所述有效位数字存储的准确度,搭建多尺度卷积神经网络的数据质量评估模型;

将所述有效位数字在所述数据质量评估模型中获取数据质量评估报告;

结合所述数据质量评估报告,确定所述高精度数据的存储质量;

若所述数据质量评估报告显示结果为数据质量低,则需要重新获取有效位数字,并将所述有效位数字重新进行存储;

否则,所述有效位数字存储合格。

说明书 :

一种基于计算机高精度计算的数据存储及读取方法

技术领域

[0001] 本发明涉及数据存储与传输技术领域,特别涉及一种基于计算机高精度计算的数据存储及读取方法。

背景技术

[0002] 目前,对于高精度数据无法在计算机中正常存储的问题,一般是将高精度数据一位一位的拆开,用字符串方式进行存储,对于圆周率高精度数据使用如“3.1415926535897932384626433......”字符串存储;或者使用整数数组,将各个数字按顺序存储在数组中,如使用int类型的数值,将整数部分和小数部分按4位数字的整数存储在数组中,得到{3,
1415,9265,3589,7932,3846,2643, 3......}数组。
[0003] 然而,在一般的科学计算中,会经常使用到小数点后几十位或上百位有效位数字,也可能是几万万兆亿或更大的数字。一般这类数字统称为高精度数据。对于此类高精度数据在计算机中无法用通常的double类型进行存储。因为计算机系统中一般double类型的数据精度只有16位,也就是说,对于圆周率Pi= 3.1415926535897932384626433......,使用double类型的数值来存储,只能精确到3.141592653589793(共16位有效位数字),这对于在航天系统中16位有效位数字的精度远远不够,在计算中会造成较大的误差,不能满足系统的精度要求。
[0004] 目前对高精度数据提出的一些存储方法,对于软件系统中高精度数据在存储与传输占用空间较少的情况下是可行的。但是,对于航天仿真系统中,需要对大量的天体或航天器进行长时间的仿真计算,同时为了调试检验计算过程的正确性,经常在计算过程中输出中间计算结果值(大都是高精度数据)到日志文件以便分析查找与定位计算发生错误的位置,这就涉及到大量的高精度数据的存储问题。如果采用通常的高精度数据存储方法,得到的日志文件将非常庞大,同时也在一定程度上影响了系统运行的效率。因此,本文提出一种基于计算机高精度计算的数据存储及读取方法,可以极大的减少存储空间,提高系统效率,并且不丢失数据精度。

发明内容

[0005] 本发明提供一种计算机软件高精度计算中数据存储及读取方法,用以通过将高精度数据进行形式转换,并根据转换后的形式为数据分配存储空间,同时,将存储后的高精度数据进行读取。
[0006] 本发明提供一种基于计算机高精度计算的数据存储及读取方法,包括:
[0007] 步骤1:将高精度数据转换为特定形式;
[0008] 步骤2:基于所述特定形式,确定有效位数字,并将所述有效位数字以预设个数字为单位,从左到右按照预设数值范围分配存储空间并存储数值;
[0009] 步骤3:获取所述特定形式中的符号以及指数值信息并进行存储;
[0010] 步骤4:基于所述步骤2‑3,建立存储结构;
[0011] 步骤5:基于所述存储结构,将存储后的所述高精度数据进行读取。
[0012] 优选的,一种基于计算机高精度计算的数据存储及读取方法,
[0013] 所述特定形式为:所述特定形式为:0.a*10n,其中,a为有效位数字的正整数,且a的最高位数字不为0;n表示指数,且n为正整数或负整数。
[0014] 优选的,一种基于计算机高精度计算的数据存储及读取方法,在步骤2中,基于所述特定形式,确定有效位数字,将所述有效位数字以预设个数字为单位,从左到右按照预设数值范围分配存储空间并存储数值的具体步骤,包括:
[0015] 将所述有效位数字以预设个数字为单位从左到右进行分组,并获取子分组数值;
[0016] 基于所述子分组数值的大小确定所述子分组数值所对应的数值范围;
[0017] 判断所述数值范围的值是否大于第一标准数值;
[0018] 若所述数值范围的值全都小于或等于所述第一标准数值,将所述子分组数值作为存储数值进行二进制数据化;
[0019] 否则,获取第一设定值,并将所述第一设定值与所述子分组数值进行第一做差运算,同时,将第一做差结果作为存储数值进行二进制数据化;
[0020] 基于所述数值范围确定所述存储数值的存储标识值、再分配位数;
[0021] 同时,根据所述再分配位数,并基于二进制化后的结果,获取对应的有效位数字存储结构。
[0022] 优选的,一种基于计算机高精度计算的数据存储及读取方法,基于所述步骤3,对所述特定形式中的符号以及指数值信息进行存储的具体步骤,包括:
[0023] 步骤31:获取指数值信息,并基于所述指数值信息确定所述指数值的数值范围;
[0024] 步骤32:根据所述指数值的数值范围获取指数值所对应的分配位数,同时,将所述指数值与第二设定值进行第一求和运算,并将第一求和结果作为存储值;
[0025] 其中,所述第二设定值由所述指数值所对应的分配位数决定;
[0026] 步骤32:将所述存储值进行二进制数据化;
[0027] 步骤33:根据所述二进制数据化的结果以及所述指数值所对应的分配位数获取对应的指数存储结构。
[0028] 优选的,一种基于计算机高精度计算的数据存储及读取方法,对所述存储值按照所述分配位数进行存储,还包括:以1字节为最小存储粒度进行存储,当最后不足分配位数时,以0补齐,其中,符号以1比特位存储,0标识正数, 1标识负数;
[0029] 同时,在所述存储结构的最高位上增加一个字节存储空间。
[0030] 优选的,一种基于计算机高精度计算的数据存储及读取方法,对于步骤5,基于所述存储结构,将存储后的所述高精度数据进行读取的具体步骤包括:
[0031] 步骤51:读取所述存储结构的第一字节值s,其中,以预设数值x标识当前读取的实际存储空间比特位数,其中,预设数据x的初始值为0;
[0032] 步骤52:继续读取指定比特位数m,获取标识值t,并将所述预设数值x 增加m比特位;
[0033] 步骤53:基于所述标识值t,确定需要读取后续的比特位数以及所述预设数值x需要增加的第三设定值;
[0034] 其中,所述第三设定值由所述需要读取后续的比特位数决定;
[0035] 将所述标识值t与第二标准数值进行比较;
[0036] 若所述标识值t小于或等于所述第二标准数值时,基于所述后续的比特位数,获取数值V,并将所述数值V作为读取值;
[0037] 若所述标识值t大于所述第二标准数值时,则基于所述后续的比特位数,获取数值V,同时,将第一设定值与所述数值V进行第二做差运算,且第二做差结果作为读取值;
[0038] 步骤54:将所述预设数值x与所述第三设定值进行求和运算,并获取第二求和结果,并将所述第二求和结果作为所述预设数值x的值;
[0039] 步骤55:判断所述第二求和结果是否等于指数需要的比特位数;
[0040] 若等于,则所述高精度数据中的所述有效位数字部分读取完毕;
[0041] 否则,重复步骤52‑54,直至完成对所述高精度数据中所述有效位数字的读取;
[0042] 步骤57:对所述有效位数字读取完毕时,继续读取1比特位,获取所述高精度数据指数值的正负,其中,0标识正数,1标识负数;
[0043] 步骤58:继续读取所述指数值所对应的分配位数,获取所述指数值,并将所述指数值与第二设定值进行第三做差运算,其中,第三做差结果即为所述高精度数据的真实指数值;
[0044] 步骤59:基于所述高精度数据的有效位数字以及真实指数值,完成对所述高精度数据的读取。
[0045] 优选的,一种基于计算机高精度计算的数据存储及读取方法,所述步骤5:基于所述存储结构,将存储后的所述高精度数据进行读取后,对所述高精度数据进行传输,具体工作过程包括:
[0046] 基于数据划分方法,将所述高精度数据划分为多个子数组,对每个子数组中的数据进行二进制化,获取子数组数据长度;
[0047] 基于所述子数组数据长度匹配所述子数组中所述高精度数据所对应的编码序号;
[0048] 根据所述子数组数据长度以及所述编码序号确定编码表格,并将所述子数组中的高精度数据按照所述编码表格进行编码,并获取编码结果;
[0049] 基于所述编码结果,获取所述子数组的编码矩阵,并对所述编码矩阵进行计算,获取计算结果;
[0050] 基于所述计算结果,确定所述子数组的数据标识,同时,基于所述数据标识,确定数组聚合参数;
[0051] 其中,所述数组聚合参数包括所述子数组的数据标识以及所述数组中的关键字段;
[0052] 基于所述数组聚合参数,将每个数组与其上一数组依次进行聚合;
[0053] 将聚合好后的数组执行数组压缩,并生成压缩数组;
[0054] 调用预设约束方式对所述压缩数组的传输方式进行约束,将所述压缩数组按照所述传输方式进行传输;
[0055] 同时,当所述压缩数组到达指定数据库时,对所述压缩数组通过安全校验运算获取数组校验值;
[0056] 将所述指定数据库中的数据校验值与所述数组校验值进行比较,判断所述压缩数组是否符合安全度标准;
[0057] 若所述数据校验值与所述数组校验值不一致时,则判定所述压缩数组不符合所述安全度标准,同时,阻止所述压缩数组的传输;
[0058] 否则,判定所述压缩数组符合安全度标准,并对所述压缩数组进行解压缩处理,提取数组,完成对所述高精度数据的传输。
[0059] 优选的,一种基于计算机高精度计算的数据存储及读取方法,所述步骤2,还包括:
[0060] 基于所述特定形式,确定有效位数字,并对所述有效位数字进行检测,获取所述有效位数字的失误率,同时,基于所述有效位数字的失误率,计算所述有效位数字存储的准确度,具体步骤包括:
[0061] 对所述有效位数字进行检测,并确定数据干扰因子;
[0062] 获取有效位数字所占空间长度,并基于所述有效位数字所占空间长度,确定所述有效位数字需要的检测时间;
[0063] 基于所述有效位数字所占空间长度、检测时间以及数据干扰因子,计算所述有效位数字的失误率;
[0064]
[0065] 其中,η表示所述有效位数字的失误率;μ表示数据干扰因子,且取值范围为(1.2*‑5 ‑310 ,3.6*10 );v表示对所述有效位数字进行检测的检测速度;T 表示对所述有效位数字进行检测的检测时间;σ表示所述有效位数字中存在的数据误差系数;δ表示在对所述有效‑3 ‑2
位数字进行检测时存在的漏检因子,且取值范围为(0.25*10 ,1.8*10 );m表示所述有效位数字的方差值;ξ表示所述有效位数字的数字重复率;l表示所述有效位数字所占空间长度;f表示对所述有效位数字进行检测的检测频率;e表示自然常数;
[0066] 基于所述有效位数字的失误率,计算所述有效位数字存储的准确度;
[0067]
[0068] 其中,λ表示所述有效位数字存储的准确度;U表示存储空间的总容量;k 表示存储到预定位置的数据量;k0表示未存储到预定位置的数据量;q表示存储在预定位置的数据是准确概率;β表示存储位置系数;u表示有效位数字的容量;
[0069] 基于将所述有效位数字存储的准确度,搭建多尺度卷积神经网络的数据质量评估模型;
[0070] 将所述有效位数字在所述数据质量评估模型中获取数据质量评估报告;
[0071] 结合所述数据质量评估报告,确定所述高精度数据的存储质量;
[0072] 若所述数据质量评估报告显示结果为数据质量低,则需要重新获取有效位数字,并将所述有效位数字重新进行存储;
[0073] 否则,所述有效位数字存储合格。
[0074] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
[0075] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

[0076] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0077] 图1为本发明实施例中一种计算机软件高精度计算中数据存储及读取方法流程图。

具体实施方式

[0078] 以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0079] 实施例1:
[0080] 本实施例提供了一种基于计算机高精度计算的数据存储及读取方法,如图 1所示,包括:
[0081] 步骤1:将高精度数据转换为特定形式;
[0082] 步骤2:基于所述特定形式,确定有效位数字,并将所述有效位数字以预设个数字为单位,从左到右按照预设数值范围分配存储空间并存储数值;
[0083] 步骤3:获取所述特定形式中的符号以及指数值信息并进行存储;
[0084] 步骤4:基于所述步骤2‑3,建立存储结构;
[0085] 步骤5:基于所述存储结构,将存储后的所述高精度数据进行读取。
[0086] 该实施例中,特定形式为:0.a*10n,其中,a为有效位数字的正整数,且 a的最高位数字不为0;n表示指数,且n为正整数或负整数。例如:
[0087] 将高精度数据40350324195861287 .986004418,转为形式 0.40350324195861287986004418*10^(17)。
[0088] 该实施例中,有效位数字指的是数字0以后,各位上有实际意义的数字,例如在0.40350324195861287986004418中,有效位数字为 40350324195861287986004418。
[0089] 该实施例中,预设数值范围是提前设定好的,指的是0至15、16至63、64至255、256至511、512至743、744至935、936至983、984至999
[0090] 该实施例中,符号包括正号(+)和负号(‑)。
[0091] 该实施例中,预设个数字为单位可以是至于选择以3个数字为一组,进行划分存储,是经过大量应用统计得到的最优结果,当然也可以使用4个数字一组,分配更多的存储位数存储相应的值。
[0092] 上述技术方案的有益效果是:通过将高精度数据进行形式转换,并根据转换后的形式为数据分配存储空间,可以极大的减少存储空间,提高系统效率,并且不丢失数据精度。
[0093] 实施例2:
[0094] 在上述实施例1的基础上,本实施例提供了一种基于计算机高精度计算的数据存储及读取方法,,其特征在于,在步骤2中,基于所述特定形式,确定有效位数字,将所述有效位数字以以预设个数字为单位,从左到右按照预设数值范围分配存储空间并存储数值的具体步骤,包括:
[0095] 将所述有效位数字以预设个数字为单位从左到右进行分组,并获取子分组数值;
[0096] 基于所述子分组数值的大小确定所述子分组数值所对应的数值范围;
[0097] 判断所述数值范围的值是否大于第一标准数值;
[0098] 若所述数值范围的值全都小于或等于所述第一标准数值,将所述子分组数值作为存储数值进行二进制数据化;
[0099] 否则,获取第一设定值,并将所述第一设定值与所述子分组数值进行第一做差运算,同时,将第一做差结果作为存储数值进行二进制数据化;
[0100] 基于所述数值范围确定所述存储数值的存储标识值、再分配位数;
[0101] 同时,根据所述再分配位数,并基于二进制化后的结果,获取对应的有效位数字存储结构。
[0102] 该实施例中,预设个数字为单位可以是至于选择以3个数字为一组,进行划分存储,是经过大量应用统计得到的最优结果,当然也可以使用4个数字一组,分配更多的存储位数存储相应的值。
[0103] 该实施例中,有效位数字例如以三个数字为单位进行如下解释:
[0104] 存储小数点0后的一系列有效位数字,以三个数字(假设数值为V)为单位,从左到右按下面数值范围分配存储空间并存储数值:
[0105] V范围0至15,需要3位存储标识值0,再分配位数4位,存储V值;
[0106] V范围16至63,需要3位存储标识值1,再分配位数6位;存储V值;
[0107] V范围64至255,需要3位存储标识值2,再分配位数8位;存储V值;
[0108] V范围256至511,需要3位存储标识值3,再分配位数9位;存储V值;
[0109] V范围512至743,需要3位存储标识值4,再分配位数9位;存储999‑V 值;
[0110] V范围744至935,需要3位存储标识值5,再分配位数8位;存储999‑V 值;
[0111] V范围936至983,需要3位存储标识值6,再分配位数6位;存储999‑V 值;
[0112] V范围984至999,需要3位存储标识值7,再分配位数4位;存储999‑V 值,[0113] 例如:对于高精度数据‑0.356752314243986004418*10^(‑3),存储小数点0 后的一系列有效位数字356752314243986004418,以三个数字为单位,从左到右,分别为356、752、314、243、986、004、418;那么分配的位数及存储的数值为如下:
[0114] [356]需要3位存储标识值3,再分配位数9位;存储值V=356,二进制值是101100100.
[0115] [752]需要3位存储标识值5,再分配位数8位;存储值999‑752=247,二进制值是11110111.
[0116] [314]需要3位存储标识值3;再分配位数9位;存储值V=314,二进制值是100111010.
[0117] [243]需要3位存储标识值2;再分配位数8位;存储值V=243,二进制值是11110011.
[0118] [986]需要3位存储标识值7;再分配位数4位;存储值999‑986=13,二进制值是1101.
[0119] [004]需要3位存储标识值0;再分配位数4位;存储值V=4,二进制值是0100.[0120] [418]需要3位存储标识值3;再分配位数9位;存储值V=418,二进制值是110100010。
[0121] 这样,得到该高精度数据小数点0后的一系列有效位数字的存储结构如下:
[0122]
[0123] 该实施例中,第一标准值在子分组数值的取值范围中,且值为511。
[0124] 该实施例中,第一设定值可以是是一个固定常数为999。
[0125] 上述技术方案的有益效果是:通过将高精度数据以三个数字为单位进行分组,确保了在对高精度数据存储时,极大的节省存储空间,提高了系统的工作效率,同时也便于在对数据读取时进行快速准确的调用。
[0126] 实施例3:
[0127] 在上述实施例1的基础上,本实施例提供了一种基于计算机高精度计算的数据存储及读取方法,基于所述步骤3,对所述特定形式中的符号以及指数值信息进行存储的具体步骤,包括:
[0128] 步骤31:获取指数值信息,并基于所述指数值信息确定所述指数值的数值范围;
[0129] 步骤32:根据所述指数值的数值范围获取指数值所对应的分配位数,同时,将所述指数值与第二设定值进行第一求和运算,并将第一求和结果作为存储值;
[0130] 其中,所述第二设定值由所述指数值所对应的分配位数决定;
[0131] 步骤32:将所述存储值进行二进制数据化;
[0132] 步骤33:根据所述二进制数据化的结果以及所述指数值所对应的分配位数获取对应的指数存储结构。
[0133] 该实施例中,将高精度数据按小数点后一系列有效位数字、符号和指数值信息进行存储,以1字节为最小存储粒度进行存储,最后不足8bit位时以0补齐。
[0134] 其中,符号以1bit位存储,0标识正数,1标识负数;
[0135] 指数值exp在【‑63,63】之间时,分配7bit位(存储范围0到127)存储值exp+63.[0136] 指数值在【‑127,127】之间时,分配8bit(存储范围0到255)位存储值 exp+127;
[0137] 指数值在【‑255,255】之间时,分配9bit(存储范围0到511)位存储值 exp+255;
[0138] 例如,对于高精度数据‑0.356752314243986004418*10^(‑3),使用7bit存储空间来存储指数值,此时,得到最后的二进制存储结构如下:
[0139]
[0140] 由于采用二进制方式存储数据,这样对于连续2个高精度数据,只根据二进制存储结构无法区分2个数据的分割点,因此,需要在每个高精度数据的二进制存储结构的第一个字节保存本数据实际的存储空间大小。一般来说,高精度数据的实际存储空间不超过255字节大小,因此分配1个字节来存储该数值是满足大小需求的。因此,对于高精度数据‑0.356752314243986004418*10^(‑3),最后得到如下的内存存储结构:
[0141]
[0142] 该实施例中,通常指数分配9位足够一般应用需求,在实际应用中,根据系统的高精度数据数值范围,统一确定使用7bit存储空间还是8bit、9bit存储空间来存储指数值exp。
[0143] 上述技术方案的有益效果是:通过将有效位数字和符号以及指数进行分开存储,便于对高精度数据的符号和指数进行准确记录,便于在调用数据时准确找到数据对应的符号以及指数,同时也提高了存储效率,极大的节省了存储空间
[0144] 实施例4:
[0145] 在上述实施例3的基础上,本实施例提供了一种基于计算机高精度计算的数据存储及读取方法,对所述存储值按照所述分配位数进行存储,还包括:以 1字节为最小存储粒度进行存储,当最后不足分配位数时,以0补齐,其中,符号以1比特位存储,0标识正数,1标识负数;
[0146] 同时,在所述存储结构的最高位上增加一个字节存储空间。
[0147] 上述技术方案的有益效果是:通过对转换形式后的高精度数据进行二进制转化,并对不足分配位数的进行补领操作,同时用数字准确表示数据的正负,为准确区分数据的正负提供了便利。
[0148] 实施例5:
[0149] 在上述实施例1的基础上,本实施例提供了一种基于计算机高精度计算的数据存储及读取方法,对于步骤5,基于所述存储结构,将存储后的所述高精度数据进行读取的具体步骤包括:
[0150] 步骤51:读取所述存储结构的第一字节值s,其中,以预设数值x标识当前读取的实际存储空间比特位数,其中,预设数据x的初始值为0;
[0151] 步骤52:继续读取指定比特位数m,获取标识值t,并将所述预设数值x 增加m比特位;
[0152] 步骤53:基于所述标识值t,确定需要读取后续的比特位数以及所述预设数值x需要增加的第三设定值;
[0153] 其中,所述第三设定值由所述需要读取后续的比特位数决定;
[0154] 将所述标识值t与第二标准数值进行比较;
[0155] 若所述标识值t小于或等于所述第二标准数值时,基于所述后续的比特位数,获取数值V,并将所述数值V作为读取值;
[0156] 若所述标识值t大于所述第二标准数值时,则基于所述后续的比特位数,获取数值V,同时,将第一设定值与所述数值V进行第二做差运算,且第二做差结果作为读取值;
[0157] 步骤54:将所述预设数值x与所述第三设定值进行求和运算,并获取第二求和结果,并将所述第二求和结果作为所述预设数值x的值;
[0158] 步骤55:判断所述第二求和结果是否等于指数需要的比特位数;
[0159] 若等于,则所述高精度数据中的所述有效位数字部分读取完毕;
[0160] 否则,重复步骤52‑54,直至完成对所述高精度数据中所述有效位数字的读取;
[0161] 步骤57:对所述有效位数字读取完毕时,继续读取1比特位,获取所述高精度数据指数值的正负,其中,0标识正数,1标识负数;
[0162] 步骤58:继续读取所述指数值所对应的分配位数,获取所述指数值,并将所述指数值与第二设定值进行第三做差运算,其中,第三做差结果即为所述高精度数据的真实指数值;
[0163] 步骤59:基于所述高精度数据的有效位数字以及真实指数值,完成对所述高精度数据的读取。
[0164] 该实施例中,预设数值可以是readSize,是为了在高精度数据在读取或接受解析过程中取的实际存储空间位数。
[0165] 该实施例中,读取或接受解析过程。首先读取第一个字节值,获得该高精度数据的实际存储空间大小s值;此时,以数值readSize=0标识当前读取的实际存储空间bit位数;
[0166] 然后读3bit位,得到标识值t,对应步骤二中的存储标识值,可知,[0167] 当t=0时,需要读后续的4bit位得到数值V,此时将数值readSize增加7;
[0168] 当t=1时,需要读后续的6bit位得到数值V,此时将数值readSize增加9;
[0169] 当t=2时,需要读后续的8bit位得到数值V,此时将数值readSize增加11;
[0170] 当t=3时,需要读后续的9bit位得到数值V,此时将数值readSize增加12;
[0171] 当t=4时,需要读后续的9bit位得到数值V,重新设置V值为999‑V,此时将数值readSize增加12;
[0172] 当t=5时,需要读后续的8bit位得到数值V,重新设置V值为999‑V,此时将数值readSize增加11;
[0173] 当t=6时,需要读后续的6bit位得到数值V,;重新设置V值为999‑V;此时将数值readSize增加9.
[0174] 当t=7时,需要读后续的4bit位得到数值V,重新设置V值为999‑V,此时将数值readSize增加7。
[0175] 此时,判断数值readSize是否小于(s*8‑1‑指数分配位数),若是,则该高精度数据的小数点后有效位数字部分读取完毕;否则继续读3bit位,得到标识值t,按上述步骤循环处理;
[0176] 当对小数点后有效位数字部分读取完毕时,继续读1bit位,如果=0标识该数据是正数,1标识该数据是负数;再读后续7bit(或8bit,或9位)指数分配得到数值exp,将exp减去63(或127,或255)便得到该高精度数据的真实指数值,如此得到准确的高精度数据;
[0177] 例如:对于表的内存数据,
[0178]
[0179] 首先读取第一个字节值得到s=10字节,
[0180] 然后读3bit位,得到标识值t=3,需要读后续的9bit位得到数值V=35;此时将数值readSize=12,
[0181] 判断readSize<(80‑1‑7)=72,继续读3bit位,得到标识值t=5,需要读后续的 8bit位得到数值247,重新设置V值为999‑V=752;此时数值readSize=23,[0182] 判断readSize<72,继续读3bit位,得到标识值t=3,需要读后续的9bit位得到数值V=314;此时将数值readSize=35,判断readSize<72,继续读3bit 位,得到标识值t=2,需要读后续的8bit位得到数值V=243;此时数值readSize=46,
[0183] 判断readSize<72,继续读3bit位,得到标识值t=7,需要读后续的4bit位得到数值V=13,重新设置V值为999‑13=986;此时数值readSize=53,
[0184] 判断readSize<72,继续读3bit位,得到标识值t=0,需要读后续的4bit 位得到数值V=4;此时将数值readSize增加7,readSize=60,
[0185] 判断readSize<72,继续读3bit位,得到标识值t=3,需要读后续的9bit 位得到数值V=418;此时将数值readSize=72,
[0186] 判断readSize不小于72,对小数点后有效位数字部分读取完毕;继续读 1bit位得到数值1,表示此高精度数据是负数,再读后续7bit(假设该应用系统设置高精度数据的范围可以使用7bit来存储指数值)得到指数值exp=60,将 exp减去63得到‑3,此时,该高精度数据便是‑0.356752314243986004 418*10^(‑3),与本方法处理之前的数值完全相同。
[0187] 该实施例中,在组合小数点后有效位数字部分时,如果数值V是一位数字或二位数字,需要以0补充为00V或0V三个数字形式,如V=4时补充0组合为004,V=24时补充0组合为024。
[0188] 该实施例中,第二标准数值属于标识值t的范围内,且值为4。
[0189] 上述技术方案的有益效果是:通过依次确定存储数据指数位、有效位数字、符号位,完成对已存储数据的准确读取,提高了读取的准确度以及速率,提高了系统效率,并且不丢失数据精度。
[0190] 实施例6:
[0191] 在实施例1的基础上,本实施例提供了一种基于计算机高精度计算的数据存储及读取方法,所述步骤5:基于所述存储结构,将存储后的所述高精度数据进行读取后,对所述高精度数据进行传输,具体工作过程包括:
[0192] 基于数据划分方法,将所述高精度数据划分为多个子数组,对每个子数组中的数据进行二进制化,获取子数组数据长度;
[0193] 基于所述子数组数据长度匹配所述子数组中所述高精度数据所对应的编码序号;
[0194] 根据所述子数组数据长度以及所述编码序号确定编码表格,并将所述子数组中的高精度数据按照所述编码表格进行编码,并获取编码结果;
[0195] 基于所述编码结果,获取所述子数组的编码矩阵,并对所述编码矩阵进行计算,获取计算结果;
[0196] 基于所述计算结果,确定所述子数组的数据标识,同时,基于所述数据标识,确定数组聚合参数;
[0197] 其中,所述数组聚合参数包括所述子数组的数据标识以及所述数组中的关键字段;
[0198] 基于所述数组聚合参数,将每个数组与其上一数组依次进行聚合;
[0199] 将聚合好后的数组执行数组压缩,并生成压缩数组;
[0200] 调用预设约束方式对所述压缩数组的传输方式进行约束,将所述压缩数组按照所述传输方式进行传输;
[0201] 同时,当所述压缩数组到达指定数据库时,对所述压缩数组通过安全校验运算获取数组校验值;
[0202] 将所述指定数据库中的数据校验值与所述数组校验值进行比较,判断所述压缩数组是否符合安全度标准;
[0203] 若所述数据校验值与所述数组校验值不一致时,则判定所述压缩数组不符合所述安全度标准,同时,阻止所述压缩数组的传输;
[0204] 否则,判定所述压缩数组符合安全度标准,并对所述压缩数组进行解压缩处理,提取数组,完成对所述高精度数据的传输。
[0205] 该实施例中,基于子数组数据长度匹配子数组中所述高精度数据所对应的编码序号可以是首先获取数组长度,基于数组长度将其按照预设比例进行平均化,平均后的结果再进行编码,从而获取编码序号,例如是:将数组长度为10,将其按照5的比例进行平均化,结果就是将数组长度分成2个长度为一组进行编码。
[0206] 该实施例中,子数组的标识数据可以是对数组进行识别的标志,且隶属于子数组中的数据。
[0207] 该实施例中,数组的关键字段可以是与高精度数据的有效位数字相关联,为了保证数组传输的无误性。
[0208] 该实施例中,预设约束方式可以是MySQL外键约束方式。
[0209] 该实施例中,安全度标准可以是与数据校验值相符合,当低于数据校验值或高于数据校验值时,即为不符合安全度标准。
[0210] 上述技术方案的有益效果是:
[0211] 通过将高精度数据划分后获取子数组从而有利于进行编码,通过编码获取相关的数组聚合参数,并通过将每个数组与其上一数组依次进行聚合,从而有利于对数组进行压缩,将压缩好的数组进行安全校验,有利于保证到达指定数据库的数组中数据的安全性,从而完成对高精度数据的传输,该方法有利于节省传输时间与提高安全性,从而保证了高精度数据的传输效率、实施例7:
[0212] 在实施例1的基础上,本实施例提供了一种基于计算机高精度计算的数据存储及读取方法,所述步骤2,还包括:
[0213] 基于所述特定形式,确定有效位数字,并对所述有效位数字进行检测,获取所述有效位数字的失误率,同时,基于所述有效位数字的失误率,计算所述有效位数字存储的准确度,具体步骤包括:
[0214] 对所述有效位数字进行检测,并确定数据干扰因子;
[0215] 获取有效位数字所占空间长度,并基于所述有效位数字所占空间长度,确定所述有效位数字需要的检测时间;
[0216] 基于所述有效位数字所占空间长度、检测时间以及数据干扰因子,计算所述有效位数字的失误率;
[0217]
[0218] 其中,η表示所述有效位数字的失误率;μ表示数据干扰因子,且取值范围为(1.2*‑5 ‑310 ,3.6*10 );v表示对所述有效位数字进行检测的检测速度;T 表示对所述有效位数字进行检测的检测时间;σ表示所述有效位数字中存在的数据误差系数;δ表示在对所述有效‑3 ‑2
位数字进行检测时存在的漏检因子,且取值范围为(0.25*10 ,1.8*10 );m表示所述有效位数字的方差值;ξ表示所述有效位数字的数字重复率;l表示所述有效位数字所占空间长度;f表示对所述有效位数字进行检测的检测频率;e表示自然常数;
[0219] 基于所述有效位数字的失误率,计算所述有效位数字存储的准确度;
[0220]
[0221] 其中,λ表示所述有效位数字存储的准确度;U表示存储空间的总容量;k 表示存储到预定位置的数据量;k0表示未存储到预定位置的数据量;q表示存储在预定位置的数据是准确概率;β表示存储位置系数;u表示有效位数字的容量;
[0222] 基于将所述有效位数字存储的准确度,搭建多尺度卷积神经网络的数据质量评估模型;
[0223] 将所述有效位数字在所述数据质量评估模型中获取数据质量评估报告;
[0224] 结合所述数据质量评估报告,确定所述高精度数据的存储质量;
[0225] 若所述数据质量评估报告显示结果为数据质量低,则需要重新获取有效位数字,并将所述有效位数字重新进行存储;
[0226] 否则,所述有效位数字存储合格。
[0227] 该实施例中,数据干扰因子可以是对在检测过程中的存在有干扰的数据,例如是,检测发生混乱的数据,起到对数据检测干扰的作用,对有效位数字的失误率提供了基数。
[0228] 该实施例中,有效位数字中存在的数据误差系数,可以是对有效位数字中有关于错误数据,无关数据以及重复数据等的数字。
[0229] 该实施例中,漏检因子可以是,在检测过程中,对高精度数据进行检测时所存在漏检的数据,其漏检因子是经过多次数据检测所得出的,在对数据检测过程中,将漏检因子计算在内可以有效判定数据失误率的情况。
[0230] 该实施例中,存储位置系数可以是决定存储的位置有影响的数字,例如系数是5,则其存储的位置可以是排列在第五个位置中。
[0231] 上述技术方案的有益效果是:
[0232] 通过特定形式,确定有效位数字,并对有效位数字进行检测,从而有利于准确获取有效位数字的失误率,进而计算出有效位数字存储的准确度,通过基于有效位数字存储的准确度搭建多尺度卷积神经网络的数据质量评估模型,可以准确完成对有效位数字的质量评估,从而有利于提高有效位数字的存储质量。
[0233] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。