Java 的 BigInteger class
Java's BigInteger class
Java的BigInteger class使用什么算法进行乘法和除法,它们各自的时间复杂度是多少?
Java 的 BigInteger class 使用什么基本类型 - byte、short、int 等 - 为什么?
Java 的 BigInteger class 如何处理其原始类型已签名这一事实?如果答案是它就可以了而且它真的很乱,那我 need/want 就知道这些了。我真正想知道的是它是否像某些 python 库那样作弊,因为它们不是用 python 编写的?
原因:对于大多数平台来说,它是最快的。
我查看了 BigInteger
here 的源代码。这是我的发现。
BigInteger
没有 "cheat"。在 Java 中,"cheating" 是通过使用所谓的 "native" 函数来实现的。请参阅 java.lang.Math
以获得相当广泛的列表。
BigInteger
使用 int
来表示其数据。
private transient int[] words;
是的,它很乱。有很多类似的东西。
Oracle 的 java.math.BigInteger class 经历了从 Java 7 到 Java 8 的一些广泛改进。您可以通过检查 grepcode.com 上的源代码来亲自了解。不作弊,都是纯正的java.
在内部,它使用一个 sign-magnitude representation 的整数,使用一个 int
值的数组来存储大小。回想一下 java int 是一个 32 位值。使用所有 32 位而不考虑符号。这个大小也很方便,因为两个 int
的乘积适合 java long
.
从 Java 8 开始,BigInteger class 添加了一些高级算法,例如 Karatsuba 和 Toom-Cook 乘法,以提高数千位整数的性能。
Java的BigInteger class使用什么算法进行乘法和除法,它们各自的时间复杂度是多少?
Java 的 BigInteger class 使用什么基本类型 - byte、short、int 等 - 为什么?
Java 的 BigInteger class 如何处理其原始类型已签名这一事实?如果答案是它就可以了而且它真的很乱,那我 need/want 就知道这些了。我真正想知道的是它是否像某些 python 库那样作弊,因为它们不是用 python 编写的?
原因:对于大多数平台来说,它是最快的。
我查看了 BigInteger
here 的源代码。这是我的发现。
BigInteger
没有 "cheat"。在 Java 中,"cheating" 是通过使用所谓的 "native" 函数来实现的。请参阅 java.lang.Math
以获得相当广泛的列表。
BigInteger
使用 int
来表示其数据。
private transient int[] words;
是的,它很乱。有很多类似的东西。
Oracle 的 java.math.BigInteger class 经历了从 Java 7 到 Java 8 的一些广泛改进。您可以通过检查 grepcode.com 上的源代码来亲自了解。不作弊,都是纯正的java.
在内部,它使用一个 sign-magnitude representation 的整数,使用一个 int
值的数组来存储大小。回想一下 java int 是一个 32 位值。使用所有 32 位而不考虑符号。这个大小也很方便,因为两个 int
的乘积适合 java long
.
从 Java 8 开始,BigInteger class 添加了一些高级算法,例如 Karatsuba 和 Toom-Cook 乘法,以提高数千位整数的性能。