在我的程序中,我使用 BitArrays 来表示 160 位数字。我希望能够加、减、递增和递减这些数字,这样做的算法是什么?
目前我对乘法和除法不感兴趣,但我将来可能会为此加分。
我正在用 C# 实现,但如果您不熟悉该语言,伪代码也可以
在我的程序中,我使用 BitArrays 来表示 160 位数字。我希望能够加、减、递增和递减这些数字,这样做的算法是什么?
目前我对乘法和除法不感兴趣,但我将来可能会为此加分。
我正在用 C# 实现,但如果您不熟悉该语言,伪代码也可以
由于您使用的是 C#,因此您可能想查看添加到最近发布的 .NET 4.0中的BigInteger 。
有一个更好的方法,高中数学使用标准的“涟漪携带”方法,它的缺点是你必须一次工作一点。“向前看”是您想用谷歌搜索或只是阅读的术语:
http://en.wikipedia.org/wiki/Carry_look-ahead_adder
它将位分组并执行一些巧妙的逻辑,以大大减少将数字相加的步骤数。有一个并行的减法过程,我只是不记得名字了。
增量和减量可以手写,加减可以用 write 方法。您知道此方法是因为您在基础学校中使用此方法适用于所有数字系统,不仅适用于基数 2 和 10。
像这样:
100100
010110 +
--------
111010