一种大整数算法的计算机处理系统
阅读说明:本技术 一种大整数算法的计算机处理系统 (Computer processing system of large integer algorithm ) 是由 孟祥成 沈玉权 李�杰 蔡志峰 于 2021-06-23 设计创作,主要内容包括:本发明涉及一种大整数算法的计算机处理系统,属于计算机技术领域。其包括大整数的存储模块、大整数的输入与读取模块、大整数的输出模块、大整数运算处理器和结果处理器,大整数的存储分为两大方面,内存存储与外存存储,采用了文本文件形式。本发明以大整数的“基”为标准进行分组和合组,以“数组”表达大整数,提高了计算机处理系统的数据处理能力和通用性。(The invention relates to a computer processing system of a large integer algorithm, belonging to the technical field of computers. The large integer storage system comprises a large integer storage module, a large integer input and reading module, a large integer output module, a large integer operation processor and a result processor, wherein the large integer storage is divided into two aspects, namely internal storage and external storage, and a text file form is adopted. The invention takes the 'base' of the large integer as the standard to carry out grouping and combination, and the 'array' is used for expressing the large integer, thereby improving the data processing capability and the universality of a computer processing system.)
技术领域
本发明涉及一种大整数算法的计算机处理系统,属于计算机
技术领域
。背景技术
由于“大整数”超出了程序设计语言整数类型的值集范围,所以它的表达、存储、读取、处理、输出等问题用一般编程方法难以实现。但随着大整数应用领域逐渐扩大及个人计算机处理能力的快速发展,很多领域的科技工作者,由于自身工作的需要,针对性提出了一些大整数处理的一些思路和方法,但由于加密和解密领域考虑系统对硬件支持较多,其方法在数据处理能力和通用性方面存在局限性。
发明内容
针对上述情况,为克服现有技术的缺陷,本发明提供一种大整数算法的计算机处理系统,有效的解决了上述技术背景中提到的问题。
为实现上述目的,本发明提供如下技术方案:
本发明提供了一种大整数算法的计算机处理系统,其包括大整数的存储模块、大整数的输入与读取模块、大整数的输出模块、大整数运算处理器和结果处理器,所述大整数的存储模块和大整数的输入与读取模块分别与大整数运算处理器电性连接,大整数的输入与读取模块与大整数的存储模块电性连接,大整数运算处理器与结果处理器电性连接,结果处理器与大整数的输出模块电性连接。
所述大整数的存储模块对外部输入的大整数进行存储,包括内存存储与外存存储,所述内存存储大整数的方式用“数组”表达,从高到低写入大整数的各值,先“分组”,各组之间以空格分隔,其中除做高组外,不足九位数指定的位数,高位用0补齐,“数组”的非0“最高位”是符号位,正整数的符号“+”用“-2”表示,负整数的符号“-”用“-1”表示,最高位以下各下标对应的数组变量分别是整数数据的“分组”;
所述大整数的输入与读取模块将大整数先后输入至所述大整数的存储模块与大整数运算处理器,并从大整数的存储模块内的文本文件中读取大整数;
所述大整数运算处理器对所述大整数的输入与读取模块输入的大整数数据进行计算;
所述结果处理器将大整数运算处理器计算所得的值转换为字符串,并进行输出;
所述大整数的输出模块以大整数的“基”为标准进行合组,所述大整数的“基”为1000000000,即9位整数为一组,其中除做高组外,不足九位数指定的位数,高位用0补齐,各组之间用空格分隔,其非0“最高位”是符号位,“-2”表示正整数的符号为“+”,“-1”表示负整数的符号为“-”,将所述大整数运算处理器处理的大整数进行输出。
进一步地,所述输入模块从键盘输入大整数,要求连续输入正号或负号及全部数字,数字之间用空格实现分组。
进一步地,所述外存存储大整数采用数据库形式或是采用文本文件形式。
进一步地,所述内存存储大整数采用字符串“存储”大整数,最终转换为“数组”存储方式。
进一步地,所述大整数的输出模块的读取大整数方法为:初始化:临时数值型数组,容量为9999,读取文件首个非空字符,如果为+,说明为正数,如果为-,说明为负数,读取以下数据到tempLine,将读取的数据行tempLine按空格数字串赋值到多字符串数组中,数据长度超过临时数组的剩余容量,当超过临时数组剩余容量时,根据数据长度扩大临时数组的容量,将字符串数组中的数据逐个写入到大整数数组中,读下一个数据行到tempLine,将临时数组中的数据按顺序连续地导入到大整数数组中,并保证最低一组数据存放在下标为0的数组单元中。
进一步地,所述大整数运算处理器大整数的模、余算法如下:正整数u=(u1u2......um+n)和v=(v1v2......vn)b,基数为b,这里v1>0,且n>1,v1为第一个正整数,设商为u/v=(q0q1...qm)b,余数为umodv=(r1r2......rn)b,其中u为正整数,v为正整数,r为余数,进行规范化试商,首先将被除数和除数放大:放大因子d=基b/(除数的最高组数v1+1)的整数部分,然后令u0u1u2……um+n<--u1u2……um+n*d,v1v2……vm+n<--v1v2……vn*d;在后面的试商过程中,不断地用(uj*b+uj+1)/v1的整数部分作为“初商”,看“初商”*v减去当前剩余的u的前n+1位后是否还超过v?如果超过,说明初商还不够,须加1;最后,余数要再除以放大因子d,结果才是真正的余数。
进一步地,所述大整数运算处理器在对大整数和一般整数进行计算时,先将一般整数转换为大整数,再调用大整数相应的算法进行计算;大整数“加减”运算是基础,乘除运算通过转换为加减运算完成,幂、模、余运算通过转换为乘除运算完成,得到相应的值。
进一步地,所述大整数的输出模块以文本文件形式将大整数输出到外存存储进行存储或输出到屏幕显示或打印机打印。
有益效果
本发明以大整数的“基”为标准进行分组和合组,以“数组”表达大整数,提高了计算机处理系统的数据处理能力和通用性。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明系统框图;
图2是本发明大整数的输出模块的读取大整数方法的逻辑关系表。
具体实施方式
下面结合附图1和图2对本发明的具体实施方式做进一步详细说明。
实施例,由图1和图2给出,本发明提供一种大整数算法的计算机处理系统,包括大整数的存储模块、大整数的输入与读取模块、大整数的输出模块、大整数运算处理器和结果处理器。所述大整数的存储模块和大整数的输入与读取模块分别与大整数运算处理器电性连接,大整数的输入与读取模块与大整数的存储模块电性连接,大整数运算处理器与结果处理器电性连接,结果处理器与大整数的输出模块电性连接。
所述大整数的存储模块对外部输入的大整数进行存储,大整数的存储分为两大方面:内存存储与外存存储。“数组”表达大整数的方式就是最好的内存存储大整数的方式。从高到低写入大整数的各值,先“分组”,各组之间以空格分隔,其中除做高组外,不足九位数指定的位数,高位用0补齐。“数组”的非0“最高位”是符号位,正整数的符号“+”用“-2”表示,负整数的符号“-”用“-1”表示,最高位以下各下标对应的数组变量分别是整数数据的“分组”。
例如输入正整数:+32910321028500250031
先分组(9位/组):+32 910321028 500250031
然后用数组表达:n[3]=-2;n[2]=32;n[1]=910321028;n[0]=500250031
这样,数组n就是大整数+32910321028500250031的本系统发明的表达。
采用字符串“存储”大整数也行,但最终需要转换为“数组”存储方式。外部存储大整数,一种方法是用数据库,另一种方式是用文本文件。采用文本文件形式,可以方便以后“大整数”文件的读取和数据转换。“大整数”按系统的大整数“基”为分组依据进行分组,即按如下形式分组大整数:+32 910321028 500250031,其中空格数不限,标准是一个空格”。
所述大整数的输入与读取模块,1、从键盘输入大整数,要求连续输入正负号及全部数字,数字之间可用空格分组,也可不分组;2、从文本文件中读取大整数,系统将自动检查与自动按标准分组,按标准大整数表达方式读取数据信息。
所述大整数的输出模块,系统将以大整数“基”为标准进行合组,输出到文本文件进行存储,或输出到屏幕显示或打印机打印,其中每组数中不足9位的,用0补齐,各组之间用空格分隔。
本发明的大整数算法的计算机处理系统默认的大整数基“基”为1000000000,即9位整数为一组,其中非0“最高位”是符号位,“-2”表示正整数的符号“+”,“-1”表示负整数的符号“-”,最高位以下各下标对应的数组变量分别是整数数据的“分组”,将所述大整数运算处理器处理的大整数进行输出。
如内存中的大整数“n[3]=-2,n[2]=123456,n[1]=12345678,n[0]=1”,输出形式为:“+000123456 012345678 000000001”,而不是“+123456123456781”,其目的是,前者去掉空格后就是大整数本身,既直观又方便。
所述大整数运算处理器,用于对大整数的输入模块输入的大整数数据进行计算;
所述结果处理器,用于对计算处理器计算所得的值转换为字符串进行输出。
所述大整数的存储模块的存储方法为:创建新文件,根据大整数的符号位数值,向文件中写入+或-号,从高到低写入大整数的各值,各组之间采用空格分隔,其中除做高组外,不足九位数指定的位数,高位用0补齐。
所述大整数的输出模块的读取大整数方法为:初始化,临时数值型数组,容量为9999,读取文件首个非空字符,如果为+,说明为正数,如果为-,说明为负数,读取以下数据到tempLine,将读取的数据行tempLine按空格数字串赋值到多字符串数组中,数据长度超过临时数组的剩余容量,当超过临时数组剩余容量时,根据数据长度扩大临时数组的容量,将字符串数组中的数据逐个写入到大整数数组中,读下一个数据行到tempLine,将临时数组中的数据按顺利连续地导入到大整数数组中,并保证最低一组数据存放在下标为0的数组单元中,如图2所示。
所述大整数运算处理器在对大整数和一般整数进行计算时,需先将一般整数转换为大整数,再调用大整数相应的算法即可。
所述大整数运算处理器大整数的模、余算法采用:正整数u=(u1u2......um+n)和v=(v1v2......vn)b,基数为b,这里v1>0,且n>1,v1为第一个正整数,设商为u/v=(q0q1...qm)b,余数为umodv=(r1r2......rn)b,u为正整数,v为正整数,r为余数,为了试商的规范化,首先将被除数和除数放大:放大因子d=基b/(除数的最高组数v1+1)的整数部分,然后令u0u1u2……um+n<--u1u2……um+n*d,v1v2……vm+n<--v1v2……vn*d;在以后的试商过程中,不断地用(uj*b+uj+1)/v1的整数部分作为“初商”,看“初商”*v减去当前剩余的u的前n+1位后是否还超过v?如果超过,说明初商还不够,须加1;最后,余数要注意再除以放大因子d,结果才是真正的余数。
本发明使用时,在一般整数的运算处理原理的基础上,将原理推广应用到“大整数”运算体系中处理能力强,微软最新版的计算器的大整数精确位数仅为32位,而本系统大整数处理位数几乎没有限制,主要受限于计算机的内存,运算速度快,处理1024位(2进制位)即308位十进制数的加密与解密过程仅需1秒钟的时间;处理几万位的加法只须0.1秒时间,使用方便,系统采用代号表示大整数,方便用户使用命令进行处理。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 上一篇:一种医用注射器针头装配设备
- 下一篇:十进制结构矩阵计算原理及实现方法