设计BigNumber类

时间:2011-03-11 20:07:26

标签: c# class

我正在C#中实现我自己的BigNumber类用于教育目的。首先,我打算对基本算术,关系运算符和某些数学方法进行编码。值将存储在字节数组中。

你们能不能给我一些关于我如何设计这样一个课程的技巧,或者更确切地说是设计这样一个课程的正确方法?

修改

我不是在寻求有关如何实现特定运算符和方法的帮助。我想知道如何在内部构建课程。

3 个答案:

答案 0 :(得分:3)

我在C ++中做过一次。我建议您阅读“计算机编程艺术”。 Volume 2具有实现大数字算法的所有细节。这是一个很好的资源(对于这个和许多其他问题。)

这本书应该来自你周围的大多数公共图书馆(或任何大学图书馆)。

顺便说一句。无需阅读整本书,如果您只是希望您可以将其用作所需算法的参考。

更新:对于API,您应该尝试模拟.NET中现有的API编号。类似于Int32

至于内部类设计,它应该非常简单,因为应该很少有单元进行交互。您可以抽象出“存储”(字节数组)部分,并使用标准迭代器在某些通用存储提供程序上迭代“数字”。这将允许您更改为使用int数组。如果您这样做,那么您可以自动更改数字的基数,并使您的实现能够为每个数字存储“更多”。这意味着操作的基础不是静态的,而是由“数字”大小决定的。

我很乐意实施我的,这是一个简单但很好的项目。就我而言,我并不喜欢内部设计。祝你好运!

答案 1 :(得分:1)

维基百科在Arbitrary-precision arithmetic上有一个非常好的参考页面。它概述了您将面临的许多问题,以及各种实现的链接。

答案 2 :(得分:0)

除了已经说过的内容之外,您还可以在codeplex.com上找到BigNumber项目,这样您就可以查看多个实现的源代码。检查http://bignumber.codeplex.com/

相关问题