首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigInteger算法是如何在内部工作的?

问BigInteger算法是如何在内部工作的?
EN

Stack Overflow用户
提问于 2021-10-15 19:23:48
回答 1查看 61关注 0票数 2

Java的BigInteger divide在内部是如何工作的?我做了大量的研究却一无所获。因此,我对CPU如何进行除法做了一些研究,并研究了恢复/非恢复除法和快速除法算法等内容。但是,我不认为这些方法适用于BigInteger,因为BigInteger似乎必须利用Java原生操作。如果BigInteger像这些技术概述那样一点一点地做事情,那就太慢了。

EN

回答 1

Stack Overflow用户

发布于 2021-10-15 19:45:24

OpenJDK的实现(是的,这是依赖于实现的)使用Knuth的“算法D”或Burnikel-Ziegler算法,这取决于除数和被除数有多大。如果除数很小,或者它们的大小相似,则使用前者。您可以查看源代码here。

代码语言:javascript
复制
public BigInteger divide(BigInteger val) {
    if (val.mag.length < BURNIKEL_ZIEGLER_THRESHOLD ||
            mag.length - val.mag.length < BURNIKEL_ZIEGLER_OFFSET) {
        return divideKnuth(val);
    } else {
        return divideBurnikelZiegler(val);
    }
}

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69589668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档