我正在尝试为 bignums 实现长除法。不幸的是,由于嵌入式编程的限制,我不能使用像 GMP 这样的库。此外,我想要学习如何实施它的智力练习。到目前为止,我已经使用任意长度的字节数组完成了加法和乘法(所以每个字节就像一个 base-256 数字)。
我只是想开始实施除法/模数,我想知道从哪里开始?我在网上发现了很多高度优化(又名不可读)的代码,这对我没有帮助,而且我发现了很多高科技的数学白皮书,我无法从中弥合理论和实现之间的差距.
如果有人可以推荐一种流行的算法,并为我指出一个易于理解的易于实现的解释,那就太好了。
-edit:我需要在被除数为~4000bits,除数为~2000bits 时工作的算法
-edit:这个算法是否适用于 base-256 ?http://courses.cs.vt.edu/~cs1104/BuildingBlocks/divide.030.html
-编辑:这是我真正应该使用的算法(牛顿除法)吗?http://en.wikipedia.org/wiki/Division_(digital)#Newton.E2.80.93Raphson_division