给代表数字N的位数指定一个大O界限

时间:2018-12-16 22:28:42

标签: math big-o bit discrete-mathematics

N是随机数,

我对束缚感到困惑。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

好吧,对于一个随机数n,存在ab这样的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

因此,我们要使用的big-O表示法是O(floor(log(n)) + 1) = O(logn)


其他信息:


1)我认为这是一个随机的,整数的正数(尽管也很容易归纳为负数),我认为这是您遇到的问题;对于小数来说,推广这个公式会比较困难

2)对数符号是指以2为底的对数