给出表示数字 N 所需位数的大 O 界限
Give a big-O bound on the number of bits needed to represent a number N
N为随机数,
我对绑定感到困惑。
感谢任何帮助。
嗯,对于一个随机数 n
,存在 a
、b
使得 2^a <= n <= 2^b
或者只是一个 k
使得 2^(k-1) <= n <= 2^k - 1
(1)。我们知道对于任何小于 2^n
的数字,我们需要 log(2^n) = n * log(2) = n
位来表示它 (2)。例如:
- 5: 4 < 5 < 8;我们需要 3 位来表示 4,5 位来表示 8 => 我们需要 4 位来表示 5
- 23: 16 = 2^4 < 23 < 32 = 2^5;所以我们需要 5 位来表示 23
总之,对于随机数n的精确位数b,我们可以使用公式:
b = floor(log(n)) + 1
因此,我们要使用的大 O 表示法是 O(floor(log(n)) + 1) = O(logn)
。
额外信息:
SO Answer
1) 我认为它是一个随机的整数正数(尽管它也很容易概括为负数),我想这是你的问题案例;对于小数来说,概括这个公式有点困难
2) log表示法是指以2为底的对数
N为随机数,
我对绑定感到困惑。
感谢任何帮助。
嗯,对于一个随机数 n
,存在 a
、b
使得 2^a <= n <= 2^b
或者只是一个 k
使得 2^(k-1) <= n <= 2^k - 1
(1)。我们知道对于任何小于 2^n
的数字,我们需要 log(2^n) = n * log(2) = n
位来表示它 (2)。例如:
- 5: 4 < 5 < 8;我们需要 3 位来表示 4,5 位来表示 8 => 我们需要 4 位来表示 5
- 23: 16 = 2^4 < 23 < 32 = 2^5;所以我们需要 5 位来表示 23
总之,对于随机数n的精确位数b,我们可以使用公式:
b = floor(log(n)) + 1
因此,我们要使用的大 O 表示法是 O(floor(log(n)) + 1) = O(logn)
。
额外信息:
SO Answer
1) 我认为它是一个随机的整数正数(尽管它也很容易概括为负数),我想这是你的问题案例;对于小数来说,概括这个公式有点困难
2) log表示法是指以2为底的对数