一种超长位数乘法的处理方法和计算机可读存储介质技术

技术编号:26064807 阅读:27 留言:0更新日期:2020-10-28 16:37
本发明专利技术涉及一种超长位数乘法的处理方法,包括:S1、基于编码模式和计算进制基数对超长位数进行编码,以生成分层级的超长位数编码;S2、根据参与超长位数乘法的超长位数的符号和所述超长位数生成的所述超长位数编码进行乘法运算。本发明专利技术还涉及计算机可读存储介质。实施本发明专利技术的超长位数乘法的处理方法和计算机可读存储介质,通过将一个超长位数N进行编码符号提取,然后通过计算编码层级和每个层级对应的层级基数,从而提供一种超过目前计算机能处理位数的超长位数的编码方法,并且进一步的提供了基于超长位数编码的乘法计算方法,能够实现超快的超大数值的乘法运算,从而适应大数据分析、处理、计算等大算力计算任务需要。

【技术实现步骤摘要】
一种超长位数乘法的处理方法和计算机可读存储介质
本专利技术涉及信息编码与计算领域,更具体地说,涉及一种超长位数乘法的处理方法和计算机可读存储介质。
技术介绍
大数运算,顾名思义,就是很大的数值的数进行一系列的运算。我们知道,在数学中,数值的大小是没有上限的,但是在计算机中,由于字长的限制,计算机所能表示的范围是有限的,当我们对比较小的数进行运算时,这样的数值并没有超出计算机的表示范围,所以可以运算。但是当我们在实际的应用中进行大量的数据处理时,由于编程语言提供的基本数值数据类型表示的数值范围有限,不能满足较大规模的高精度数值计算,因此需要利用其他方法实现高精度数值的计算,于是产生了大数运算。大数运算目前在信息安全、数字图像、大数据挖掘等领域应用比较广泛。目前,常用的大数算法有:模拟手算算法、快速傅里叶变换算法以及中国余数定理等,这些算法普遍存在效率低下问题。
技术实现思路
本专利技术要解决的技术问题在于,针对现有技术的上述缺陷,提供一种超长位数乘法的处理方法和计算机可读存储介质,能够实现超快的超大数值的乘法运算,从而适应大数据分析、处理、计算等大算力计算任务需要。本专利技术解决其技术问题所采用的技术方案是:构造一种超长位数乘法的处理方法,包括:S1、基于编码模式和计算进制基数对超长位数进行编码,以生成分层级的超长位数编码;S2、根据参与超长位数乘法的超长位数的符号和根据所述超长位数生成的所述超长位数编码进行乘法运算。在本专利技术所述的超长位数乘法的处理方法中,所述步骤S1进一步包括:S11、采用多项式将十进制超长位数X=XtXt-1……X1表示成X=X1*(10)0+X2*(10)1+……+Xt*(10)t-1,t属于自然数,X的符号为X.bSign;S12、遍历字符串XtXt-1…X1,对所述字符串中的每个字符进行二进制编码以获得编码字符串和第一层级基数;S13、从所述编码字符串的首个非零字符开始遍历所述编码字符串,对所述编码字符串中的每个字符进行二进制编码以获得新生成的编码字符串和下一层级基数;对每次遍历获得的新生成的编码字符串进行二进制编码直至最后生成的字符串为空,且基于层数和每一层级基数生成所述分层级的超长位数编码。在本专利技术所述的超长位数乘法的处理方法中,所述步骤S12进一步包括:S121、基于以下公式遍历字符串X=XtXt-1…X1,对所述字符串中的每个字符进行二进制编码以获得编码字符串和第一层级基数:基于Xt→Xt/2n=α1,Xt%2n=β1,X→α1Xt-1…X1;Xt-1+β1*10→(Xt-1+β1*10)/2n=α2,(Xt-1+β1*10)%2n=β2,X→α1α2Xt-2…X1;……X1+βγ-1*10→(X1+βγ-1*10)/2n=αγ,(X1+βγ-1*10)%2n=βγ,X→α1α2…αγ;其中,编码字符串为α1α2…αγ,第一层级基数为:βγ,;n表示计算机能够计算的最大位数,%表示求余数,/表示求商,皆为整数运算。在本专利技术所述的超长位数乘法的处理方法中,所述步骤S13进一步包括:S131、从所述编码字符串α1α2…αγ的首个非零字符开始,将α1α2…αγ作为X,执行所述步骤S121以获得新生成的字符串和下一层级基数;S132、对新生成的字符串重复执行步骤S131直至最后生成的字符串为空;S133、基于层数和每一层级基数生成所述分层级的超长位数编码X'=X′1*(2n)0+X′2*(2n)1+……+X′u*(2n)u-1,其中u表示层数,X′1,X′2,……,X′u为每一层的基数。在本专利技术所述的超长位数乘法的处理方法中,所述步骤S2进一步包括:S21、基于参与超长位数乘法的两个超长位数M和N生成所述分层级的超长位数编码M'和N':M'=M′1*(2n)0+M′2*(2n)1+……+M′u*(2n)u-1,u为超长位数M的层数,M′1,M′2,……,M′u为每一层的基数;M'的符号为M'.bSign,N'=N′1*(2n)0+N′2*(2n)1+……+N′v*(2n)v-1,v为超长位数N的层数,N'的符号为N'.bSign;S22、对于所述分层级的超长位数编码M'和N',将其中一个超长位数编码的每一层级与另一超长位数编码的全部层级分别相乘,然后移位求和以获得乘法结果;S23、基于M'.bSign和N'.bSign确定所述乘法结果的符号。在本专利技术所述的超长位数乘法的处理方法中,所述步骤S22进一步包括:S221、定义乘法结果resMulti=[R1,R2,……,Rt],其中t=u+v,初始化为:resMulti=[0,0,……,0];S222、将所述分层级的超长位数编码N'的第一层级与所述分层级的超长位数编码M'的全部层级相乘获得分层中间乘积mul1;将所述分层中间乘积mul1左移0位之后与乘法结果resMulti=[R1,R2,……,Rt]求和,并更新所述乘法结果resMulti=[R1,R2,……,Rt];S223、重复执行步骤S222以将所述分层级的超长位数编码N'的每一层级与所述分层级的超长位数编码M'的全部层级相乘获得新的分层中间乘积mul1;将新的所述分层中间乘积mul1左移设定位之后与乘法结果resMulti=[R1,R2,……,Rt]求和,并更新所述乘法结果resMulti=[R1,R2,……,Rt],所述设定位=层级数-1。在本专利技术所述的超长位数乘法的处理方法中,在所述步骤S222中,按照如下公式将所述分层级的超长位数编码N'的第一层级与所述分层级的超长位数编码M'的所有层级进行乘法计算mul1:首先分别计算N′1*M′1,N′1*M′2,……,N′1*M′u;然后计算mul1最后将mul1左移0位后做乘法运算获得所述乘法结果resMulti=[R1,……,Ru,……,Rt]=[R1+mul11,……,Ru+mul1u,……,Rt]。在本专利技术所述的超长位数乘法的处理方法中,在所述步骤S222中,采用多个并行节点分别计算N′1*M′1,N′1*M′2,……,N′1*M′u。在本专利技术所述的超长位数乘法的处理方法中,所述步骤S223进一步包括按照如下公式将所述分层级的超长位数编码N'的第v层级与所述分层级的超长位数编码M'的所有层级进行乘法计算mulv=M'*N′v:首先分别计算N′v*M′1,N′v*M′2,……,N′v*M′u;然后计算mulv;最后将mulv左移v-1位后做乘法运算resMulti=[R1,R2,……,Rv,……,Rt]=[R1,R2,……,Rv+mulv1,……,Rt+mulv(u+1)]。本专利技术解决其技术问题采用的另一技术方案是,构造一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的超长位数乘法的处理方法。实施本专利技术的超长位数本文档来自技高网...

【技术保护点】
1.一种超长位数乘法的处理方法,其特征在于,包括:/nS1、基于编码模式和计算进制基数对超长位数进行编码,以生成分层级的超长位数编码;/nS2、根据参与超长位数乘法的超长位数的符号和根据所述超长位数生成的所述超长位数编码进行乘法运算。/n

【技术特征摘要】
1.一种超长位数乘法的处理方法,其特征在于,包括:
S1、基于编码模式和计算进制基数对超长位数进行编码,以生成分层级的超长位数编码;
S2、根据参与超长位数乘法的超长位数的符号和根据所述超长位数生成的所述超长位数编码进行乘法运算。


2.根据权利要求1所述的超长位数乘法的处理方法,其特征在于,所述步骤S1进一步包括:
S11、采用多项式将十进制超长位数X=XtXt-1……X1表示成X=X1*(10)0+X2*(10)1+……+Xt*(10)t-1,t属于自然数,X的符号为X.bSign;
S12、遍历字符串XtXt-1…X1,对所述字符串中的每个字符进行二进制编码以获得编码字符串和第一层级基数;
S13、从所述编码字符串的首个非零字符开始遍历所述编码字符串,对所述编码字符串中的每个字符进行二进制编码以获得新生成的编码字符串和下一层级基数;对每次遍历获得的新生成的编码字符串进行二进制编码直至最后生成的字符串为空,且基于层数和每一层级基数生成所述分层级的超长位数编码。


3.根据权利要求2所述的超长位数乘法的处理方法,其特征在于,所述步骤S12进一步包括:
S121、基于以下公式遍历字符串X=XtXt-1…X1,对所述字符串中的每个字符进行二进制编码以获得编码字符串和第一层级基数:
基于Xt→Xt/2n=α1,Xt%2n=β1,X→α1Xt-1…X1;
Xt-1+β1*10→(Xt-1+β1*10)/2n=α2,(Xt-1+β1*10)%2n=β2,X→α1α2Xt-2…X1;
……
X1+βγ-1*10→(X1+βγ-1*10)/2n=αγ,(X1+βγ-1*10)%2n=βγ,X→α1α2…αγ;
其中,编码字符串为α1α2…αγ,第一层级基数为:βγ,;n表示计算机能够计算的最大位数,%表示求余数,/表示求商,皆为整数运算。


4.根据权利要求3所述的超长位数乘法的处理方法,其特征在于,所述步骤S13进一步包括:
S131、从所述编码字符串α1α2…αγ的首个非零字符开始,将α1α2…αγ作为X,执行所述步骤S121以获得新生成的字符串和下一层级基数;
S132、对新生成的字符串重复执行步骤S131直至最后生成的字符串为空;
S133、基于层数和每一层级基数生成所述分层级的超长位数编码X'=X′1*(2n)0+X′2*(2n)1+……+X′u*(2n)u-1,其中u表示层数,X′1,X′2,……,X′u为每一层的基数。


5.根据权利要求4所述的超长位数乘法的处理方法,其特征在于,所述步骤S2进一步包括:
S21、基于参与超长位数乘法的两个超长位数M和N生成所述分层级的超长位数编码M'和N':
M'=M′1*(2n)0+M′2*(2n)1+……+M′u*(2n)u-1,u为超长位数M的层数,M′1,M′2,……,M′u为每一层的基数;M'的符号为M'.bSign,
N'=N′1*(2n)0+N...

【专利技术属性】
技术研发人员:戚建淮郑伟范唐娟彭华刘建辉汪乔
申请(专利权)人:深圳市永达电子信息股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1