BigInteger如何存储其数据?

时间:2011-05-04 04:38:20

标签: java biginteger

我一直在寻找相当长的一段时间,而且我几乎没有发现BigInteger实际上如何保持其数字。它们是一系列字符吗?别的什么?如何将数据转换为BigInteger

根据我的发现,我假设所有任意精度类,如BigIntegerBigDecimal,都将数据保存为字符数组。它是如何实际工作的?或者只是人们的猜测?

我问,因为我一直在努力实现BigInteger这样的事情,但我无法弄清楚如何保持大于Long.MAX_VALUE的数字(我不记得了实际数字)。

提前致谢。

3 个答案:

答案 0 :(得分:21)

使用int[]

来自消息来源:

/**
 * The magnitude of this BigInteger, in <i>big-endian</i> order: the
 * zeroth element of this array is the most-significant int of the
 * magnitude.  The magnitude must be "minimal" in that the most-significant
 * int ({@code mag[0]}) must be non-zero.  This is necessary to
 * ensure that there is exactly one representation for each BigInteger
 * value.  Note that this implies that the BigInteger zero has a
 * zero-length mag array.
 */
final int[] mag;

答案 1 :(得分:-1)

表示数字的最常用方法是使用位置表示法系统。使用数字写入数字以表示指定基数的倍数。我们每天最熟悉和使用的基础是基数10.当我们在基数10中写入数字12345时,它实际上意味着:12345 = 1 * 10 ^ 4 + 2 * 10 ^ 3 + 3 * 10 ^ 2 + 4 * 10 ^ 1 + 5 * 10 ^ 0

Continued here...

答案 2 :(得分:-1)

有很多方法可以表示大整数。字符串很简单, 任何曾经用铅笔和纸做过长时间划分的人都可以写 算术程序。