本文主要是介绍大整数的运算---高精度加法与高精度减法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
高精度加法
思路:将该数的两个数字与进位端相加,得到的结果取个位数作为该位结果,取十位数作为新的进位
代码实现
begin add(begin a,begin b)
{int carray=0;//carray是进位begin c;for(int i=0;i<a.len||i<b.len;i++)//以较长的为界限{int temp=a.d[i]+b.d[i]+carray;//两个对应位与进位相加c.d[c.len++]=temp%10;//个位数为该结果carray=temp/10;//十位数为新的进位端}if(carray!=0)//如果最后进位不为0,则直接赋给结果的最高位{a.d[c.len++]=carray;}return c;
}
高精度减法
思路:对于 某一步,比较被减位和减位,如果不够减,则令被减位的高位减1,被减位加10在进行减法;如果能够减,则直接减。但最后要注意减法后高位可能有多余的0,要去除它们,但是也要保证结果至少有一位数。
代码实现
begin sub(begin a,begin b)
{begin c;for(int i=0;i<a.len||i<b.len;i++){if(a.d[i]<b.d[i]){a.d[i+1]--;//向高位借位a.d[i]+=10;//当前位加10}c.d[c.len++]=a.d[i]-b.d[i];//减法结果为当前位结果}while(c.len-1>=1&&c.d[len-1]==0){c.len--;//去除最高位的0,同时至少保留一位最低位}return c;
}
这篇关于大整数的运算---高精度加法与高精度减法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!