除法是我们实现高精度整数运算中的最后一个四则运算,之所以会放到如此靠后的位置,那是因为在我看来,除法是这四个运算里最难实现的。实际上,在实现除法的运算中,我们用到了几乎之前所有的内容,包含“比较”、“乘法”、“减法”。所以在有了前面的铺垫后,我们实现高精度整数的除法运算就轻而易举了。
依照惯常思路,我们利用我们手算除法的方式来实现高精度除法运算,如图1所示。

图1

我们从左侧逐位获取被除数的一位,然后进行试除,并记录商,反复操作后就能得到高精度商,这个商是向下取整的(没有浮点位),在除法运算的试除的过程中,我们把除数从9开始作为商进行试除,试除的商递减,第一个使得被除数相同位数字减去试除商乘以除数的结果大于零的试除商,即为实际此位上的商。
最后只需要把前导零去除,并按照乘法处理数字符号的方法给结果填上正负标记即可(除法和乘法可以相互转化,但是在运算中我们没有这么做的原因是,除数求倒的过程需要高精度的浮点数,而且该浮点数很可能是无限循环的,这会导致我们的结果最后并不准确)。
下面就是除法的具体实现过程,注意到,其中使用了高精度乘法、高精度减法以及高精度的比较运算:

下面就是目前完整的高精度运算类,对之前的代码做了一些小修改:

说点什么

1 评论 在 "高精度整数运算(6)除法"

  Subscribe  
最新 最旧 得票最多
提醒

好有用的说~qwq