2

结果,阶乘函数可能会返回一个非常大的数字。

我怎样才能计算出由于阶乘而必须返回的数据的大小?是否有一个函数可以根据我们正在计算阶乘的数字 n 快速给我数据的大小?

例如,阶乘 (5) = 5 * 4 * 3 * 2 = 120

数字 120 将是​​ 120 = 0b1111000,其中 0b 表示这是一个二进制数。至少,我需要 7 位来表示结果和概率,我想将其放入 8 位中作为一个字节。

4

1 回答 1

4

您需要计算log2(factorial(N)),四舍五入到下一个更高的数字,以获得表示结果所需的位数。如果您不确定是否可以使用当前设置计算或表示阶乘结果,您可以尝试计算从 2 到 N(包括 2 和 N)范围内log2(i)的所有的总和。i

作为示例,让我们计算 的位数factorial(5)

log2(120) = 6.906, rounded up become 7 (bits)

否则,

log2(2) + log2(3) + log2(4) + log2(5) = 6.906, which gives same result
于 2012-11-27T11:33:58.800 回答