gpt4 book ai didi

java - 计算 BigInteger 的位数和字数

转载 作者:行者123 更新时间:2023-12-02 03:42:40 24 4
gpt4 key购买 nike

String转换为BigInteger时,Java内部计算位数,然后计算单词数(我认为每个单词是一组9个整数)从第 325 行到第 327 行可以看到 here 中的 BigInteger。然后使用 numWords 创建一个可以容纳该 BigInteger 的数组。

我不明白第 325 行计算 numBits 的逻辑以及第 326 行计算 numWords 的逻辑。

从逻辑上讲,我认为对于字符串“123456789”,numWords应该是1,对于“12345678912”,numWords应该是2,但情况并非总是如此。例如,对于“12345678912345678912”,numWords 应为 3,但结果为 2。

谁能解释一下第325行和第326行中使用的逻辑吗?

最佳答案

要将numDigits的十进制数表示为二进制数,需要

numDigits * Math.log(10) / Math.log(2)

位。

int numBits = (int)(((numDigits * bitsPerDigit[radix]) >>> 10) + 1);

在上面的计算中,bitsPerDigit[10]3402

Math.log(10) / Math.log(2) * Math.pow(2, 10) = 3401.6543691646593

关于java - 计算 BigInteger 的位数和字数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36661622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com