CN109871197B - 数据存储装置及数据确定装置 - Google Patents
数据存储装置及数据确定装置 Download PDFInfo
- Publication number
- CN109871197B CN109871197B CN201811646239.0A CN201811646239A CN109871197B CN 109871197 B CN109871197 B CN 109871197B CN 201811646239 A CN201811646239 A CN 201811646239A CN 109871197 B CN109871197 B CN 109871197B
- Authority
- CN
- China
- Prior art keywords
- binary
- decimal
- bit
- length
- value
- 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
Abstract
本发明提供一种数据存储装置,包括:整数长度位及值确定模块10;小数长度位及值确定模块20;整数存储位及值确定模块30;小数存储位及值确定模块40;填充位确定模块50。本发明提供的数据存储装置按整型方式储存小数部分,极大地提升了小数的储存精度;分别设置有表征整数部分长度和小数部分长度的长度位,使得目标数在计算设备的存储空间内占用的位数可随目标值灵活地调整变更,可以充分利用存储空间,减少消耗在寄存器和存储上的功耗的浪费。
Description
技术领域
本发明涉及计算机技术领域,并且更具体地,涉及一种数据存储装置和数据确定装置。
背景技术
从贴近生活的体重测量,到科技前沿的卫星变轨,我们几乎时时刻刻都在与小数打交道。而在用计算机处理这些小数时,编程人员通常选择使用IEEE标准的单精度浮点数(float)和双精度浮点数(double)储存和计算数值。而IEEE标准描述的浮点数使用的形式来储存小数,虽然表示范围很宽,能表示上至天文数字,下至电子质量,但其有效位数及精度有限。
具体地,ieee标准描述的一个浮点数的有效位数取决于二进制小数部分的精度。通常,单精度浮点数具有6~7位有效数字,双精度浮点数具有16~17位有效数字。例如,在使用标准浮点数类型时分别储存为3.3333332538604736(float)和3.3333333333333335(double)(其中,编译环境为英特尔酷睿i5-6200U处理器,64位Win10,Visual Studio 2013)。
在精度要求高及有效位数多的场合下,小数参与多次计算后的结果将失真严重,对生产生活造成影响。
为了提高精度,一般使用占用内存更多的长双精度浮点数(long double),或者将小数放大一个固定的倍数后储存为整数(例如将0.1放大100倍储存为10)。
以上两种处理方式,均会造成一定程度的存储空间及功耗的浪费。
发明内容
本发明提供一种数据存储装置和数据确定装置,以克服浮点数存储中存储空间及功耗的浪费问题。
第一方面,本发明提供了一种数据存储装置,包括:
整数长度位及值确定模块10,用于:
获取待存储的目标数的整数部分,确定所述目标数的整数部分作为十进制数对应的二进制数的长度LZ,将所述长度LZ对应的二进制数赋值给存储空间内最高的、长度为整数长度位Z的Z个二进制数位,所述Z个二进制数位即为所述目标数的整数长度位,其中,Z为正整数,LZ为正整数;
小数长度位及值确定模块20,用于:
获取待存储的目标数的小数部分,确定所述目标数的小数部分作为十进制数对应的二进制数的长度LX,将所述长度LX对应的二进制数赋值给存储空间内紧邻所述整数长度位之后、长度为小数长度位X的X个二进制数位,所述X个二进制数位即为所述目标数的小数长度位,其中,X为正整数,LX为正整数;
整数存储位及值确定模块30,用于:
获取待存储的目标数的整数部分,确定所述目标数的整数部分作为十进制数对应的二进制数ZS,记所述二进制数ZS的位数为N,其中,ZS为正整数,N为零或正整数;
将所述二进制数ZS赋值给存储空间内紧邻所述小数长度位之后的N个二进制数位,所述N个二进制数位即为所述目标数的整数存储位;
小数存储位及值确定模块40,用于:
获取待存储的目标数的小数部分,确定所述目标数的小数部分作为十进制数对应的二进制数XS,记所述二进制数XS的位数为M,其中,XS为正整数,M为零或正整数;
将所述二进制数XS赋值给存储空间内紧邻所述整数存储位之后的M个二进制数位,所述M个二进制数位即为所述目标数的小数存储位;
填充位确定模块50,用于:
根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数或零:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
具体地,还包括:
符号位及值确定模块,用于:
判断所述目标数的符号位的数值;若所述目标数为正数,则确定符号位的值为0;若所述目标数为负数,则确定符号位的值为1;
将所述符号位的值赋值给存储空间内紧邻在所述整数长度位之前的1个二进制位;或
将所述符号位的值赋值给存储空间内紧邻在所述小数存储位之后的1个二进制位;
相应地,
所述填充位确定模块50,用于:
根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数或零:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
具体地,所述整数存储位及值确定模块30,用于:
将所述二进制数ZS的最高位之后的(N-1)个数位的值赋值给存储空间内紧邻所述小数长度位之后的(N-1)个二进制数位,所述(N-1)个二进制数位即为所述目标数的整数存储位;
相应地,
所述小数存储位及值确定模块40,用于:
将将所述二进制数XS的最高位之后的(M-1)个数位的值赋值给存储空间内紧邻所述整数存储位之后的(M-1)个二进制数位,所述(M-1)个二进制数位即为所述目标数的小数存储位;
相应地,
所述填充位确定模块50,用于:
根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数或零:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
具体地,还包括:预设值模块,用于:
获取待存储的十进制目标数;
确定整数长度位Z不大于6;
确定小数长度位X不大于6。
第二方面,本发明提供了一种数据确定装置,包括:
整数部分值确定模块1000,用于:
提取目标数的存储空间中的整数长度位中的二进制数值对应的十进制数ZL,其中,所述整数长度位的位数是预先指定的;
确定在目标数的存储空间中紧邻小数长度位之后、长度为ZL的二进制数位对应的二进制值ZE,则二进制值ZE对应的十进制数即为所述目标数的整数部分的十进制值,其中,所述长度为ZL的二进制数位即为整数存储位,其中,所述小数长度位紧邻在所述整数长度位之后;
小数部分值确定模块2000,用于:
提取目标数的存储空间中的小数长度位中的二进制数值对应的十进制数XL,其中,所述小数长度位的位数是预先指定的;
确定在目标数的存储空间中紧邻整数存储位之后、长度为XL的二进制数位对应的二进制值XE,则二进制值XE对应的十进制数即为所述目标数的小数部分的十进制值,其中,所述长度为XL的二进制数位即为小数存储位。
具体地,整数部分值确定模块1000,还用于:
确定在目标数的存储空间中紧邻小数长度位之后、长度为ZL的二进制数位对应的二进制值ZE;
为所述二进制值ZE增加数值为1的最高位,得到长度为(ZL+1)、最高位为1的调整后二进制值ZEE,则调整后二进制值ZEE对应的十进制数即为所述目标数的整数部分的十进制值,其中,所述长度为ZL的二进制数位即为整数存储位;
小数部分值确定模块2000,还用于:
确定在目标数的存储空间中紧邻整数存储位之后、长度为XL的二进制数位对应的二进制值XE;
为所述二进制值XE增加数值为1的最高位,得到长度为(XL+1)、最高位为1的调整后二进制值XEE,则二进制值XEE对应的十进制数即为所述目标数的小数部分的十进制值,其中,所述长度为XL的二进制数位即为小数存储位。
具体地,还包括:符号确定模块,用于:
提取目标数的存储空间中符号位的值,若所述符号位的值为0,则所述目标数为正数;
若所述符号位的值为1,则所述目标数为负数。
本发明提供的数据存储装置和数据确定装置,按整型方式储存浮点数的小数部分,极大地提升了小数的储存精度;分别设置表征整数部分长度和小数部分长度的长度位,使得目标数在计算设备的存储空间内占用的位数可随目标值灵活地调整变更,可以充分利用存储空间,减少消耗在寄存器和存储上的功耗的浪费。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为本发明一个实施例的数据存储装置的组成示意图;
图2为本发明一个实施例的数据确定装置的组成示意图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
本发明一个实施例的数据存储方法,包括以下步骤:
步骤S1:获取待存储的目标数的整数部分,确定所述目标数的整数部分作为十进制数对应的二进制数的长度LZ,将所述长度LZ对应的二进制数赋值给存储空间内最高的、长度为整数长度位Z的Z个二进制数位,所述Z个二进制数位即为所述目标数的整数长度位,其中,Z为正整数,LZ为正整数;
步骤S2:获取待存储的目标数的小数部分,确定所述目标数的小数部分作为十进制数对应的二进制数的长度LX,将所述长度LX对应的二进制数赋值给存储空间内紧邻所述整数长度位之后、长度为小数长度位X的X个二进制数位,所述X个二进制数位即为所述目标数的小数长度位,其中,X为正整数,LX为正整数;
步骤S3:获取待存储的目标数的整数部分,确定所述目标数的整数部分作为十进制数对应的二进制数ZS,记所述二进制数ZS的位数为N,其中,ZS为正整数,N为零或正整数;
将所述二进制数ZS赋值给存储空间内紧邻所述小数长度位之后的N个二进制数位,所述N个二进制数位即为所述目标数的整数存储位;
步骤S4:获取待存储的目标数的小数部分,确定所述目标数的小数部分作为十进制数对应的二进制数XS,记所述二进制数XS的位数为M,其中,XS为正整数,M为零或正整数;
将所述二进制数XS赋值给存储空间内紧邻所述整数存储位之后的M个二进制数位,所述M个二进制数位即为所述目标数的小数存储位;
步骤S5:根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数或零:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
具体地,该实施例的数据存储方法,在步骤S5之前,还包括:
判断所述目标数的符号位的数值;若所述目标数为正数,则确定符号位的值为0;若所述目标数为负数,则确定符号位的值为1;
将所述符号位的值赋值给存储空间内紧邻在所述整数长度位之前的1个二进制位;或
将所述符号位的值赋值给存储空间内紧邻在所述小数存储位之后的1个二进制位;
相应地,
在所述步骤S5中,根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
具体地,该实施例的数据存储方法,在步骤S3中,将所述二进制数ZS的最高位之后的(N-1)个数位的值赋值给存储空间内紧邻所述小数长度位之后的(N-1)个二进制数位,所述(N-1)个二进制数位即为所述目标数的整数存储位;
相应地,
在步骤S4中,将将所述二进制数XS的最高位之后的(M-1)个数位的值赋值给存储空间内紧邻所述整数存储位之后的(M-1)个二进制数位,所述(M-1)个二进制数位即为所述目标数的小数存储位;
相应地,
在所述步骤S5中,根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
具体地,该实施例的数据存储方法,在所述步骤S1之前,还包括:
获取待存储的十进制目标数;
确定整数长度位Z不大于6;
确定小数长度位X不大于6。
应该理解为,以上步骤中,符号位、小数长度位、整数长度位、小数存储位、整数存储位在存储空间中的先后顺序仅作为示例。
在具体实施时,符号位、小数长度位、整数长度位、小数存储位、整数存储位在存储空间中的先后顺序可以灵活地进行调整;相应地,数据存储方法中各步骤跟随地进行适应性的调整即可。因为其实现的原理相同,因此,这些调整后的步骤组合也具有本实施例具有的技术效果,这里不再赘述。
本发明一个实施例的数据确定方法,包括以下步骤:
步骤S100:提取目标数的存储空间中的整数长度位中的二进制数值对应的十进制数ZL,其中,所述整数长度位的位数是预先指定的;
确定在目标数的存储空间中紧邻小数长度位之后、长度为ZL的二进制数位对应的二进制值ZE,则二进制值ZE对应的十进制数即为所述目标数的整数部分的十进制值,其中,所述长度为ZL的二进制数位即为整数存储位,其中,所述小数长度位紧邻在所述整数长度位之后;
步骤S200:
提取目标数的存储空间中的小数长度位中的二进制数值对应的十进制数XL,其中,所述小数长度位的位数是预先指定的;
确定在目标数的存储空间中紧邻整数存储位之后、长度为XL的二进制数位对应的二进制值XE,则二进制值XE对应的十进制数即为所述目标数的小数部分的十进制值,其中,所述长度为XL的二进制数位即为小数存储位。
具体地,该数据确定方法中,
在步骤S100中,确定在目标数的存储空间中紧邻小数长度位之后、长度为ZL的二进制数位对应的二进制值ZE;
为所述二进制值ZE增加数值为1的最高位,得到长度为(ZL+1)、最高位为1的调整后二进制值ZEE,则调整后二进制值ZEE对应的十进制数即为所述目标数的整数部分的十进制值,其中,所述长度为ZL的二进制数位即为整数存储位;
在步骤S200中,确定在目标数的存储空间中紧邻整数存储位之后、长度为XL的二进制数位对应的二进制值XE;
为所述二进制值XE增加数值为1的最高位,得到长度为(XL+1)、最高位为1的调整后二进制值XEE,则二进制值XEE对应的十进制数即为所述目标数的小数部分的十进制值,其中,所述长度为XL的二进制数位即为小数存储位。
具体地,该数据确定方法中,还包括:
提取目标数的存储空间中符号位的值,若所述符号位的值为0,则所述目标数为正数;
若所述符号位的值为1,则所述目标数为负数。
如图1所示,本发明一个实施例的数据存储装置,包括:
整数长度位及值确定模块10,用于:
获取待存储的目标数的整数部分,确定所述目标数的整数部分作为十进制数对应的二进制数的长度LZ,将所述长度LZ对应的二进制数赋值给存储空间内最高的、长度为整数长度位Z的Z个二进制数位,所述Z个二进制数位即为所述目标数的整数长度位,其中,Z为正整数,LZ为正整数;
小数长度位及值确定模块20,用于:
获取待存储的目标数的小数部分,确定所述目标数的小数部分作为十进制数对应的二进制数的长度LX,将所述长度LX对应的二进制数赋值给存储空间内紧邻所述整数长度位之后、长度为小数长度位X的X个二进制数位,所述X个二进制数位即为所述目标数的小数长度位,其中,X为正整数,LX为正整数;
整数存储位及值确定模块30,用于:
获取待存储的目标数的整数部分,确定所述目标数的整数部分作为十进制数对应的二进制数ZS,记所述二进制数ZS的位数为N,其中,ZS为正整数,N为正整数;
将所述二进制数ZS赋值给存储空间内紧邻所述小数长度位之后的N个二进制数位,所述N个二进制数位即为所述目标数的整数存储位;
小数存储位及值确定模块40,用于:
获取待存储的目标数的小数部分,确定所述目标数的小数部分作为十进制数对应的二进制数XS,记所述二进制数XS的位数为M,其中,XS为正整数,M为正整数;
将所述二进制数XS赋值给存储空间内紧邻所述整数存储位之后的M个二进制数位,所述M个二进制数位即为所述目标数的小数存储位;
填充位确定模块50,用于:
根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
具体地,该实施例的数据存储装置,还包括:
符号位及值确定模块,用于:
判断所述目标数的符号位的数值;若所述目标数为正数,则确定符号位的值为0;若所述目标数为负数,则确定符号位的值为1;
将所述符号位的值赋值给存储空间内紧邻在所述整数长度位之前的1个二进制位;或
将所述符号位的值赋值给存储空间内紧邻在所述小数存储位之后的1个二进制位;
相应地,所述填充位确定模块50,用于:
根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
具体地,该实施例的数据存储装置中,所述整数存储位及值确定模块30,用于:
将所述二进制数ZS的最高位之后的(N-1)个数位的值赋值给存储空间内紧邻所述小数长度位之后的(N-1)个二进制数位,所述(N-1)个二进制数位即为所述目标数的整数存储位;
相应地,
所述小数存储位及值确定模块40,用于:
将将所述二进制数XS的最高位之后的(M-1)个数位的值赋值给存储空间内紧邻所述整数存储位之后的(M-1)个二进制数位,所述(M-1)个二进制数位即为所述目标数的小数存储位;
相应地,
所述填充位确定模块50,用于:
根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
具体地,该实施例的数据存储装置,还包括:
预设值模块,用于:
获取待存储的十进制目标数;
确定整数长度位Z不大于6;
确定小数长度位X不大于6。
如图2所示,本发明一个实施例的数据确定装置,包括:
整数部分值确定模块1000,用于:
提取目标数的存储空间中的整数长度位中的二进制数值对应的十进制数ZL,其中,所述整数长度位的位数是预先指定的;
确定在目标数的存储空间中紧邻小数长度位之后、长度为ZL的二进制数位对应的二进制值ZE,则二进制值ZE对应的十进制数即为所述目标数的整数部分的十进制值,其中,所述长度为ZL的二进制数位即为整数存储位,其中,所述小数长度位紧邻在所述整数长度位之后;
小数部分值确定模块2000,用于:
提取目标数的存储空间中的小数长度位中的二进制数值对应的十进制数XL,其中,所述小数长度位的位数是预先指定的;
确定在目标数的存储空间中紧邻整数存储位之后、长度为XL的二进制数位对应的二进制值XE,则二进制值XE对应的十进制数即为所述目标数的小数部分的十进制值,其中,所述长度为XL的二进制数位即为小数存储位。
具体地,该实施例的数据存储装置,
整数部分值确定模块1000,还用于:
确定在目标数的存储空间中紧邻小数长度位之后、长度为ZL的二进制数位对应的二进制值ZE;
为所述二进制值ZE增加数值为1的最高位,得到长度为(ZL+1)、最高位为1的调整后二进制值ZEE,则调整后二进制值ZEE对应的十进制数即为所述目标数的整数部分的十进制值,其中,所述长度为ZL的二进制数位即为整数存储位;
小数部分值确定模块2000,还用于:
确定在目标数的存储空间中紧邻整数存储位之后、长度为XL的二进制数位对应的二进制值XE;
为所述二进制值XE增加数值为1的最高位,得到长度为(XL+1)、最高位为1的调整后二进制值XEE,则二进制值XEE对应的十进制数即为所述目标数的小数部分的十进制值,其中,所述长度为XL的二进制数位即为小数存储位。
具体地,该实施例的数据存储装置,还包括:
符号确定模块,用于:
提取目标数的存储空间中符号位的值,若所述符号位的值为0,则所述目标数为正数;
若所述符号位的值为1,则所述目标数为负数。
综上,本发明实施例提出一种IEEE标准浮点数的替代方法,能精确地储存浮点数,且充分利用存储空间,减少消耗在寄存器和存储上的功耗。
double类型数据,意指IEEE标准双精度浮点数,在计算机内存中通常占用64位(8字节byte)的存储空间。标准double类型在计算机内的储存方式如表1所列,其中,第一行各数值的单位为位(bit)。
表1 标准double类型在计算机内的储存方式
本发明实施例提出的在计算设备的存储空间内存储浮点数的存储方式,如表2所列,其中,记该数V总共占用n位空间(自高向低,位索引依次为n-1,...,0)。
优选地,n的下限值为16(1+6+6+0+0+0=13,这时,需要填充为8的整数倍,16)n的上限值为128(1+6+6+63+63=127,这时,需要填充为8的整数倍,128)。
表2 本发明一个实施例的浮点数在计算机内的储存方式
本发明提供的目标浮点数V的存储方式中:
其最高位(位索引为n-1)为符号位;符号位为“0”,表示该数V为正数,符号位为“1”,表示该数V为负数;
紧邻符号位,在其之后,为整数长度位,这里,整数长度位占用6个位(二进制位),也即,该数V的整数部分的长度(占用的十进制位的位数)的取值范围为0到63;
紧邻整数长度位,在其之后,为小数长度位,这里,小数长度位占用6个位(二进制位),也即,该数V的小数部分的长度(占用的十进制位的位数)的取值范围为0到63;
紧邻小数长度位,在其之后,剩余的n-13位(包括整数储存位和小数储存位,累计不大于126位),则用来按无符号超长整型(unsigned long long)方式分别储存整数部分和小数部分。
在储存整数部分和小数部分时,由于整数部分和小数部分的最高位一定为1(否则在确定整数长度位或小数长度位时,就会指出整数存储位或小数存储位占用0位空间),因此,可以所以在储存时可省去最高位1,可以进一步减少在计算设备中占用的存储空间,以及与该存储空间有关的其他系统开销,以最大限度地利用存储器或寄存器的空间。
与十进制计数时,不会出现最高位为0的情形相似;二进制存储时,最高位的数值若不是1的话只能是0,而二进制数开头的0可以被省略,以进一步减少存储空间。在此场景下,整数部分和小数部分分别可表示的最大范围为0到264-1。
实施例1:
以下说明采用本发明提供的数据存储装置对小数-5.12进行存储时的步骤。
这里,该数据储存装置包括24个二进制位,也即3个字节;其中,最高位为符号位,整数长度位固定为6位,小数长度位固定为6位,整数存储位与数值V的整数部分(十进制位)相对应,小数存储位与数值V的小数部分(十进制位)相对应,剩余部分为填充位,填充位的长度可变。
1)根据-5.12为负数,故确定位于最高位(位索引为n-1)的符号位取值为1。
2)整数部分为(5),十进制的(5)的二进制表示为101;二进制的101的长度为3位(二进制位),(3)的二进制表示为11,故固定占用6位的整数长度位的取值为000011。
3)小数部分为(12),十进制的(12)的二进制表示为1100;二进制的1100的长度为4位,(4)的二进制表示为100,故固定占用6位的小数长度位的取值为000100。
4)整数部分为(5),十进制的(5)的二进制表示为101;隐藏101的最高位1后,整数存储位的取值为01。
5)小数部分为(12),十进制的(12)的二进制表示为1100;隐藏1100的最高位1后,小数存储位的取值为100。
6)由于在各类计算设备中,以字节为单位(也即8个整数倍)储存数据,以上步骤(1)-(5)中,累计占用1+6+6+2+3=18个位,大于2个字节且小于3个字节,因此,确定紧邻小数存储位的填充位包括6位,填充位的取值为0。
最终,采用本发明提供的数据存储装置,将小数-5.12储存在计算资源内的3个字节中,最终结果为10000110 00100011 00000000,如表3所列。
表3 小数-5.12在计算机内的储存方式
作为对比,IEEE标准下,double类型将占用8个字节,且储存的值为-5.1200000000000001。
需要说明的是,小数存储位或整数存储位中,最高位的值一定是1。而00101,0101和101表示的是同一个数。也即,最高位是0的话,可以直接省略,直到最高位为1为止。这一点,与跟十进制数也没有以0开头的数相似。因此,本发明提供的数据存储装置能精确地储存浮点数,且充分利用存储空间,减少消耗在寄存器和存储上的功耗的浪费。
实施例2:
以下说明采用本发明提供的数据获取装置对存储在计算设备的存储器内的目标数X:00000001 10000101 11111111 11111111 11111111 11111111 11111111 11111000获取其十进制数值的步骤。如表4所列,目标数X占用了计算设备内存储器的8个字节,也即64个位的存储空间。已经可以预先确定,该目标数X中包括1个符号位,6个整数长度位,6个小数长度位。
表4 目标数X在计算机内的储存方式示例
1)、提取符号位的数值,确定符号位的数值为0,故目标数X为正数;
2)、提取长度固定为6的整数长度位的数值,确定为000000,则整数长度位的位数为零,也即在该存储空间内,整数存储位的位数为零。
3)、提取长度固定为6的小数长度位的数值,确定为0110000(二进制),二进制的0110000对应的十进制数值为48,也即在该存储空间内,小数存储位的长度为48位。
4)、在步骤2)中已知,整数存储位的位数为零,因此整数部分0,在本发明实施例的存储方式中,整数部分不占用任何存储空间。
5)、在步骤3)中已知,小数存储位的长度为48位;又因为在存储步骤中,小数存储位中省略了最高位的“1”,因此,在小数长度位之后,提取长度为47位的小数存储位的数值,为二进制:10111111 11111111 11111111 11111111 11111111 1111111;相应地,在最高位补上1,得到11011111 11111111 11111111 11111111 11111111 11111111。二进制的110111111 11111111 11111111 11111111 11111111 11111111对应的十进制数为211106232532991。
6)、至此,8个字节共64个位的存储空间中,还剩余64-1-6-6-47=4个位,这4个位为填充位,其对应的数值为0。
因此,最终确定该8字节的目标数X的值为0.211106232532991。
作为对比,IEEE标准下,使用double类型时,虽然同样占用8个字节,但其储存值实际为0.21110623253299099。
因此,本发明提供的数据获取装置能在充分利用存储空间,减少消耗在寄存器和存储上的功耗的浪费的同时,更精确地储存浮点数。
由于本发明提出的数据获取装置或数据存储装置,在存储目标数时,可根据待储存的十进制数据的长度灵活地调整在计算设备中占据的存储器空间B,在固定设置1个符号位,6个整数长度位和6个小数长度位时,目标数X在计算设备中占据的存储器空间B如下式所列:
其中,Z为目标数在存储空间内占用的整数存储位的长度;
X为目标数在存储空间内占用的小数存储位的长度;
B为目标数在存储空间内占用的总字节数。
从上式可知,当且仅当目标数在存储空间内占用的整数存储位和小数存储位累计的占用位数达到54位及以上时,本发明提出的数据获取装置或数据存储装置在存储目标数时,目标数在计算设备的存储空间内占用的位数才会超过IEEE标准下的double类型所占据的8个字节。
进一步优选地,本发明提出的数据获取装置或数据存储装置在存储目标数时,可根据需要调整各部分占据的数位的长度,进一步减少目标数在计算设备的存储空间内占用的位数或扩大表示范围。
1)不设置符号位,则使用于存储无符号数据类型,以减少占用空间。
2)调整整数长度位和小数长度位的固定位数,以适应性地扩大或缩小其表示的数值范围和精度。
例如某些使用场景中,用户不需要很大的整数而需要很精确的小数,就可以减少整数长度位的位数而增加小数长度位的位数。
3)可增加整数指数位和小数指数位,以进一步扩大其表示的数值范围。
例如在整数长度位后添加6bits的指数储存位。如储存值为2,则最终计算结果将整数部分乘以10的2次方。
综上,本发明实施例的数据获取装置或数据存储装置按整型方式储存小数,极大程度提升了小数的储存精度;分别设置有表征整数部分长度和小数部分长度的长度位,使得目标数在计算设备的存储空间内占用的位数可随目标值灵活地调整变更,且充分利用存储空间,减少消耗在寄存器和存储上的功耗的浪费。
本发明提出的数据获取装置或数据存储装置在计算设备的存储空间内将目标数以字节为单位进行储存,可以避免受不同CPU架构的计算设备内数据存储形式的影响,适应性好,鲁棒性强。
综上,本发明提出的数据获取装置或数据存储装置可以更精确地储存小数,可作为IEEE标准浮点数存储的替代,充分利用存储空间,减少消耗在寄存器和存储上的功耗的浪费。
以上已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
Claims (7)
1.一种数据存储装置,其特征在于,包括:
整数长度位及值确定模块(10),用于:
获取待存储的目标数的整数部分,确定所述目标数的整数部分作为十进制数对应的二进制数的长度LZ,将所述长度LZ对应的二进制数赋值给存储空间内最高的、长度为整数长度位Z的Z个二进制数位,所述Z个二进制数位即为所述目标数的整数长度位,其中,Z为正整数,LZ为正整数;
小数长度位及值确定模块(20),用于:
获取待存储的目标数的小数部分,确定所述目标数的小数部分作为十进制数对应的二进制数的长度LX,将所述长度LX对应的二进制数赋值给存储空间内紧邻所述整数长度位之后、长度为小数长度位X的X个二进制数位,所述X个二进制数位即为所述目标数的小数长度位,其中,X为正整数,LX为正整数;
整数存储位及值确定模块(30),用于:
获取待存储的目标数的整数部分,确定所述目标数的整数部分作为十进制数对应的二进制数ZS,记所述二进制数ZS的位数为N,其中,ZS为正整数,N为零或正整数;
将所述二进制数ZS赋值给存储空间内紧邻所述小数长度位之后的N个二进制数位,所述N个二进制数位即为所述目标数的整数存储位;
小数存储位及值确定模块(40),用于:
获取待存储的目标数的小数部分,确定所述目标数的小数部分作为十进制数对应的二进制数XS,记所述二进制数XS的位数为M,其中,XS为正整数,M为零或正整数;
将所述二进制数XS赋值给存储空间内紧邻所述整数存储位之后的M个二进制数位,所述M个二进制数位即为所述目标数的小数存储位;
填充位确定模块(50),用于:
根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数或零:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
3.根据权利要求1所述的数据存储装置,其特征在于,
所述整数存储位及值确定模块(30),用于:
将所述二进制数ZS的最高位之后的(N-1)个数位的值赋值给存储空间内紧邻所述小数长度位之后的(N-1)个二进制数位,所述(N-1)个二进制数位即为所述目标数的整数存储位;
相应地,
所述小数存储位及值确定模块(40),用于:
将所述二进制数XS的最高位之后的(M-1)个数位的值赋值给存储空间内紧邻所述整数存储位之后的(M-1)个二进制数位,所述(M-1)个二进制数位即为所述目标数的小数存储位;
相应地,
所述填充位确定模块(50),用于:
根据下式确定填充位的位数S,其中,B为正整数,S为满足下式的最小正整数或零:
将0赋值给存储空间内紧邻所述小数存储位之后的S个二进制数位,所述S个二进制数位即为所述目标数的填充位。
4.根据权利要求1所述的数据存储装置,其特征在于,还包括:
预设值模块,用于:
获取待存储的十进制目标数;
确定整数长度位Z不大于6;
确定小数长度位X不大于6。
5.一种数据确定装置,其特征在于,包括:
整数部分值确定模块,用于:
提取目标数的存储空间中的整数长度位中的二进制数值对应的十进制数ZL,其中,所述整数长度位的位数是预先指定的;
确定在目标数的存储空间中紧邻小数长度位之后、长度为ZL的二进制数位对应的二进制值ZE,则二进制值ZE对应的十进制数即为所述目标数的整数部分的十进制值,其中,所述长度为ZL的二进制数位即为整数存储位,其中,所述小数长度位紧邻在所述整数长度位之后;
小数部分值确定模块,用于:
提取目标数的存储空间中的小数长度位中的二进制数值对应的十进制数XL,其中,所述小数长度位的位数是预先指定的;
确定在目标数的存储空间中紧邻整数存储位之后、长度为XL的二进制数位对应的二进制值XE,则二进制值XE对应的十进制数即为所述目标数的小数部分的十进制值,其中,所述长度为XL的二进制数位即为小数存储位。
6.根据权利要求5所述的数据确定装置,其特征在于,
整数部分值确定模块(1000),还用于:
确定在目标数的存储空间中紧邻小数长度位之后、长度为ZL的二进制数位对应的二进制值ZE;
为所述二进制值ZE增加数值为1的最高位,得到长度为(ZL+1)、最高位为1的调整后二进制值ZEE,则调整后二进制值ZEE对应的十进制数即为所述目标数的整数部分的十进制值,其中,所述长度为ZL的二进制数位即为整数存储位;
小数部分值确定模块,还用于:
确定在目标数的存储空间中紧邻整数存储位之后、长度为XL的二进制数位对应的二进制值XE;
为所述二进制值XE增加数值为1的最高位,得到长度为(XL+1)、最高位为1的调整后二进制值XEE,则二进制值XEE对应的十进制数即为所述目标数的小数部分的十进制值,其中,所述长度为XL的二进制数位即为小数存储位。
7.根据权利要求5所述的数据确定装置,其特征在于,还包括:
符号确定模块,用于:
提取目标数的存储空间中符号位的值,若所述符号位的值为0,则所述目标数为正数;
若所述符号位的值为1,则所述目标数为负数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811646239.0A CN109871197B (zh) | 2018-12-29 | 2018-12-29 | 数据存储装置及数据确定装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811646239.0A CN109871197B (zh) | 2018-12-29 | 2018-12-29 | 数据存储装置及数据确定装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109871197A CN109871197A (zh) | 2019-06-11 |
CN109871197B true CN109871197B (zh) | 2022-03-04 |
Family
ID=66917339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811646239.0A Active CN109871197B (zh) | 2018-12-29 | 2018-12-29 | 数据存储装置及数据确定装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109871197B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825323B (zh) * | 2019-10-25 | 2023-04-11 | 上海钒钛智能科技有限公司 | 浮点数数据的存储、读取方法和计算机可读存储介质 |
CN111486888A (zh) * | 2020-04-14 | 2020-08-04 | 新石器慧通(北京)科技有限公司 | 误差校正方法、装置及无人车辆 |
CN113032506B (zh) * | 2021-03-23 | 2022-03-04 | 鲁东大学 | 一种矢量位置数据的存储与传输方法 |
CN113721884B (zh) * | 2021-09-01 | 2022-04-19 | 北京百度网讯科技有限公司 | 运算方法、装置、芯片、电子装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001150739A (ja) * | 1999-11-29 | 2001-06-05 | Oki Data Corp | 印刷データ生成装置 |
US8395707B1 (en) * | 1981-11-03 | 2013-03-12 | Personalized Media Communications LLC | Signal processing apparatus and methods |
CN107015783A (zh) * | 2017-04-21 | 2017-08-04 | 中国人民解放军国防科学技术大学 | 一种浮点角度压缩实现方法及装置 |
CN107632815A (zh) * | 2017-09-22 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种整数间的计算方法、装置及计算机存储介质 |
CN108256645A (zh) * | 2018-01-19 | 2018-07-06 | 上海兆芯集成电路有限公司 | 数据位宽可调适的处理器 |
-
2018
- 2018-12-29 CN CN201811646239.0A patent/CN109871197B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8395707B1 (en) * | 1981-11-03 | 2013-03-12 | Personalized Media Communications LLC | Signal processing apparatus and methods |
JP2001150739A (ja) * | 1999-11-29 | 2001-06-05 | Oki Data Corp | 印刷データ生成装置 |
CN107015783A (zh) * | 2017-04-21 | 2017-08-04 | 中国人民解放军国防科学技术大学 | 一种浮点角度压缩实现方法及装置 |
CN107632815A (zh) * | 2017-09-22 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种整数间的计算方法、装置及计算机存储介质 |
CN108256645A (zh) * | 2018-01-19 | 2018-07-06 | 上海兆芯集成电路有限公司 | 数据位宽可调适的处理器 |
Non-Patent Citations (2)
Title |
---|
Adaptively precise time synchronization technique for inter-satellite link equipment of navigation satellite;Xiye Guo等;《2016 2nd IEEE International Conference on Computer and Communications (ICCC)》;IEEE;20170511;第1844-1848页 * |
利用整数存储无理数的测试数据编码压缩方法;詹文法等;《计算机辅助设计与图形学学报》;20160930;第28卷(第9期);第1606-1612页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109871197A (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109871197B (zh) | 数据存储装置及数据确定装置 | |
US5631859A (en) | Floating point arithmetic unit having logic for quad precision arithmetic | |
EP1032892B1 (en) | Methods apparatus and computer program products for accumulating logarithmic values | |
US6523055B1 (en) | Circuit and method for multiplying and accumulating the sum of two products in a single cycle | |
CN105634499B (zh) | 一种基于新短浮点型数据的数据转换方法 | |
US20130007078A1 (en) | Compression of floating-point data in encoding groups | |
EP2666067B1 (en) | Device and method for computing a function value of a function | |
US7397399B2 (en) | Method and device for transcoding N-bit words into M-bit words with M smaller N | |
Rajaraman | IEEE standard for floating point numbers | |
US6996596B1 (en) | Floating-point processor with operating mode having improved accuracy and high performance | |
US20070180004A1 (en) | Apparatus and method for precision binary numbers and numerical operations | |
US8280936B2 (en) | Packed restricted floating point representation and logic for conversion to single precision float | |
US20040010532A1 (en) | Apparatus and method for computing a logarithm of a floating-point number | |
CN111381808B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
JPH08179928A (ja) | データ入力信号における先行カウント桁の数を決定するための装置および方法ならびにコンピュータシステム | |
CN108153513B (zh) | 前导零预测 | |
EP4064036A1 (en) | Floating-point number multiplication computation method and apparatus, and arithmetical logic unit | |
US7236999B2 (en) | Methods and systems for computing the quotient of floating-point intervals | |
US9658827B2 (en) | Apparatus and method for performing reciprocal estimation operation | |
CN110427172A (zh) | 浮点数处理方法、装置、设备及计算机可读存储介质 | |
US20040254973A1 (en) | Rounding mode insensitive method and apparatus for integer rounding | |
CN100410871C (zh) | 应用跳跃式浮点数运算法的数字讯号处理器 | |
US10062035B1 (en) | Using variable length representations for machine learning statistics | |
WO2022204620A2 (en) | Systems and methods for efficient accumulate and multiply-accumulate operations of floating-point numbers in a unified register file | |
JP4428778B2 (ja) | 演算装置及び演算方法並びに計算装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |