高精度数的储存形式
1.使用字符串
字符串是由一个一个的字符连接而成的,每个字符可以用于保存一个数位单元。可以把一个数字作为字符存放在字符串中,也可以把数字转换成ASCII码来保存。由于美意字符的最大ASCII码的值是255,因此可以使用256进制来保存数据。例如,把十进制456789变成一个字符串:(456789)10 = (6,248,85)256 = chr(6)&chr(248)&chr(85)
若把数字作为字符串来保存,则在计算时需要进行字符与数值转换。使用这种方法的好处是能解决小数点的表示问题
2.使用数组
如同字符串一样,若使用数组来储存超高精度的书,每个数组单元可以作为一个储存单元,并采用进位制的形式来构成一个超高精度数的储存空间。根据数据类型的不同,如单进度、双精度,进位制的技术可以设置不同。在限定的条件下,可以根据需要设计出具体的进位制
3.使用链表
这种储存方法与使用数组一样,所不同是使用链表。这种方法的好处是,每个链表可以储存更多的信息,并且可以使用链表的前后指针索引相邻数据。
超高精度书包括整型和浮点型
对于长整数,计算相对较简单,因为没有小数点的问题。对它的储存,只需要把数字按照一定的方式保存到字符串、数组或链表中即可。
对于超高精度的浮点数,可以把它分解成整数和小数部分,分别进行计算。在计算时,使用不同的数组分别存放浮点数的各个部分。
数字存放顺序
在计算机系统中,有两种数据存放格式,即大端和小端格式。同样在超高精度的计算程序设计时,需要选择一种顺序来存放数据。按照通常习惯,把数的高位放在左边,低位放在右边,亦即低位数在前,高位数在后。因此若使用数组存放超高精度的数,一般使用小索引号的数组单元放置低位数字,大索引号的数组单元放置高位数字。
数的进制设置
使用10的n次方(n为一个正整数),可以把长整数进行分组形成1个数向量,每组数字的个数为n。例如,601105002456789可分解成如下的每组为n=6的整数向量:
456789
105112
601
将这个数记作A,654321记作B,则AxB = C
A B C
0 +456789*654321 = 298886 635269 → 635269
298886+105112*654321 = 68777 287838 → 287838
68777 +601 *654321 = 393 315968 → 315968
393 +0 *654321 = 393 → 393
结果即393315968287838635269