存储正整数需要多少位?

时间:2012-09-04 18:10:09

标签: binary integer

您需要多少位才能存储一个正整数,例如数十亿?您是否必须使用log2 N才能找到它?

3 个答案:

答案 0 :(得分:31)

由于我已经多次错误地报告了答案,我想我会发布正确答案。

表示正整数n所需的位数是

bits = floor( log2(n) + 1 )

其中log2表示日志库2.

答案 1 :(得分:10)

是。存储在k比特中的最大数量是2 ^ k-1,因为这些比特有2 ^ k个选项,其中一个是零。
因此,存储数字N所需的位数是log2(N),但由于没有半位,因此需要将其四舍五入到上面的cloest整数。

注意:如果您需要包含负数,则该符号必须再多一位。

答案 2 :(得分:4)

只是要添加到上一个答案,您可以计算出使用任何日志库以数学方式表示数字N需要多少位。例如,假设我想知道代表数字12345需要多少位,但我的计算器只知道ln(自然日志)。

所以,

2^b = 12345

取双方的ln

ln(2^b) = ln(12345)

当然,指数的数字对数是指数乘以只有基数的对数,所以,

b*ln(2) = ln(12345)

将双方除以ln(2),

b = ln(12345) / ln(2)

当然,正如在另一个答案中所述,你需要对这个结果进行舍入,因为要表示一些数字,你需要2 ^ b等于或大于该数字。

所以,

b = ceil(ln(12345) / ln(2))

ceil(f)f舍入到最接近的整数。

使用上述过程,您可以使用任何基数N找到任何数字logb所需的位数,即

b = ceil(logb(N) / logb(2))