- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
超长整型数值运算的计算机实现
罗国文
贵州省天柱县第二中学 556600
中文摘要:超长整型数据类型的定义及其算法在计算机上的实现。提供了超长整型数值用数组表示及运算的实现方法,使得超长数值在计算机上得以不失精度的表示,并突破了现有计算机表示的数值范围和精度,提供了超长数值无损运算的解决方案。
关键词:有效数字,超长整型数据类型,进位制,数组
概 述
数值处理是计算机的重要应用之一,但目前的计算机对于数值的数据类型仍是依据计算机的字长来规定的,以下是各种字长计算机所标称的有效数值范围:
表1 计算机字长与所表示的有效数值位数关系 机 型 无符号有效数值最大值SM=2k 有效数值
位数n 8位机 28=256 3 16位机 216=65536 5 32位机 232=4294967296 10 64位机 264=18446744073709551616 20 128位机 2128=340282366920938463463374607431768211456 38 数值一旦超过该机型的SM,只好“四舍五入”用科学计数法(浮点数)来表示,因而造成了精度的丢失。如以现在的“奔腾”64位机为例,超过20位有效数字的数值就已不能完整表示。以22!为例,22!=1124000727777607680000,而在Excel2000等数值处理软件上22!=1124000727777610000000,其绝对误差=2320000,因四舍五入而增多了232万!如果这个数据出现在中央银行的统计数据上,谁来赔这232万?如果“四舍五入”舍去了几百万我挪去用“凉”了你也会毫无察觉,我这“蛀虫”就可高枕无忧。所以有些部门没有数据的绝对正确是不行的,而一些重要部门恰好要处理超长数值量,所以计算机数据处理长度受限的问题不解决是不行的。
随着社会经济、科学的发展,我们需要更高精度的数值。在经济上,国民生产总值的统计,中央银行货币的统计,国家粮食生产量的统计等亿亿亿数量级的数值统计需要有高精度的数据处理方式。在数学上,大数研究也需要对超长数值的运算进行处理。为提高运算精度,以前所用的方法是提高计算机的字长,因此计算机从8位机到16位机直到现在的128位机,这种“硬处理”技术上要求越来越高,成本也按几何级数地增长。经我对进制数机制进行研究(另写为《进位制的高阶扩展》)后得到了本文的“软处理”的解决方法。
按数据精度的表示方法,单精度用4字节表示,有效数字为10位;双精度用8字节表示,有效数字为15位(double型);高精度用10字节表示,有效数字为19位(long double型)。那么,超过19位有效数字的整数就只有称之为超长整型的数值类型,本文的目的就是为了解决这类超长整型数值运算的计算机实现问题。
超长整型数据类型的定义及要求
定义:我们把超过目前各种编译器所定义的最高精度(19位有效数字)的整型数据定义为超长整型数据类型(简称超长型)。
要求:对于数值,不管是什么类型,都要求能实现基本的数值运算律:加、减、乘、除和求余,能进行大小比较,应具有向下兼容的运算能力。由于整数对普通除法运算不封闭,所以这里只考虑整除和余数。
为了能对超精度型进行具体的表示,有必要对数制的表示作些分析。对一个R进制数(KnKn-1……K0K-1……K-m)R的十进制数值等于一个多项式的值:
M=
(2.1)
式中:R称为基数,表示R进制。
K称为系数,对于R进制来说可在0~(R-1)之间的R个数码中选取。
其中n,m为幂指数,均为正整数。
对于大数,我们主要关心的是整数,因此本文仅讨论整数部分。则Kn就是这个R进制数的第n+1位。如果用一个n+1的数组K来记录一个n+1位的R进制整数各位上相应的系数,则有:
(0≦i≦n) (2.2)
则一个n+1位R进制的整数M的十制数计算如下:
(0≦i≦n) (2.3)
目前我们常见的是2、8、10、16进制数,而对于超长数值,现在计算机上已不能进行整体存储和运算,我们只有通过“化整为零”来用数组存储并实现运算,这在我的另一篇论文《进位制的高阶扩展》完整地阐述了这种思想。在此以十进制数为研究对象。
超长整型数值运算的实现算法
为了实现超长整型数值在计算机上得以存储并完成运算,必须新定义一种数据类型及完成数值运算的实现算法。首先考虑我们用于表示数值数组所占字节宽度及选取合适的R值。数组的数据类型考虑32位机为对象,则SM=232=4294967296,加之考虑乘法运算缓冲、进借位临时保留数据的需要,要求,故,因R=10000=104,故选
文档评论(0)