在我的程序中,我使用BitArrays来表示160位数字。我想要能够加、减、增、减这些数字,做这件事的算法是什么?
目前我对乘法和除法不感兴趣,但我将来可能会学,所以我会为它加分。
我是用C#实现的,但是如果您不熟悉这门语言,伪代码也可以
发布于 2010-04-27 07:46:04
既然您使用的是C#,那么您可能想看看最近发布的.NET 4.0中添加的BigInteger。
发布于 2010-04-27 08:31:35
还有一种更好的方法,高中数学使用标准的“波纹进位”方法,这种方法的缺点是你必须一次做一点。‘'Carry ahead’是你想在谷歌上搜索的术语,或者直接读一下:
http://en.wikipedia.org/wiki/Carry_look-ahead_adder
它对位进行分组,并执行一些巧妙的逻辑,以大大减少将数字相加的步骤数。有一个并行的减法过程,我只是记不住名字了。
发布于 2010-04-27 07:12:36
递增和递减你可以用手写,加,减,你可以用write方法写。你之所以知道这种方法,是因为你在基础学校中使用了这种方法,这种方法不仅适用于基数2和10的所有数字系统。
如下所示:
100100
010110 +
--------
111010https://stackoverflow.com/questions/2717582
复制相似问题