高精度算法(加法)
1.高精度加法
首先,我们要讲的高精度加法是大整数与大整数之间的加法。我们要先要弄懂为什么要用大整数,是因为在一个很大的数的时候我们可以通过使用数组来存储这个数,因为数组可以存储的数是非常大的。
我们在写高精度算法的时候会使用到vector<int>数组,因为里面有很多操作是写好的我们可以直接调用,如果没学过的可以就把它看成一个普通数组先来理解。
那么,开始进入正题。
加法,我们按照我们的人自己的习惯来计算加法的时候都是习惯把相对位数比较大那个放在前面,高精度加法也不例外,我们要先判断好存储着俩个大整数的数组谁的位数更大。
其中的重点就是在加法的for循环里面,我们需要事先定义好一个t用来计算加起来的总数,并且在下一次循坏执行的时候能够代表进位。
循坏的次数就是根据位数较大的那个来限制,比如我们设置的函数就假定A的位数更大,根据A的长度来限制循坏次数。
然后,我们开始进行加法运算,t先加上A的个位(我们习惯把个位放在我们的0处,之后类推),然后进行判断B的位数是否超出,如果已经超出了B能够表述的位数的时候就不加B。
然后,我们对t进行求余,这个余数就是C(用来存储新的数组,并最终作为返回值)的个位,然后对t进行整除就是下一个位数的进位。
最后在循坏外面判断一下t是否是0,不是0就是有进位,就再将t推入C数组中。
主函数里面
我们用string字符串类型来存储数字,然后定义好数组A,B等等用来对字符串字符的数字字符进行转换。
For循坏内我们是从大到小进行循坏,为什么呢?因为我们在字符串内存储的时候是从位制大的到小的,比如123456,而我们的数组存储是从个位开始存储,因此要对它从大的下标开始反向循坏.
里面的a[i]-’0’的作用是将字符类型的数字转换为数字.