Does $\forall i\in \mathbb Z^+:\left \lfloor log_{2}(i) \right \rfloor = \left \lfloor log_{2}(i+0.999999) \right \rfloor$

60 Views Asked by At

Is it true that

$\forall i\in \mathbb Z^+:\left \lfloor log_{2}(i) \right \rfloor = \left \lfloor log_{2}(i+0.999999) \right \rfloor$ ?

The following is false:

$\forall i\in \mathbb Z^+:\left \lfloor log_{2}(i) \right \rfloor = \left \lfloor log_{2}(i+1) \right \rfloor$

(R code):

> for (i in 0:1e9) if ( floor(log2(i)) != floor(log2(i+1))) print(i)
[1] 0
[1] 1
[1] 3
[1] 7
[1] 15
[1] 31
[1] 63
[1] 127
[1] 255
[1] 511
[1] 1023
[1] 2047
[1] 4095
[1] 8191
[1] 16383
[1] 32767
[1] 65535
[1] 131071
[1] 262143
[1] 524287
[1] 1048575
[1] 2097151
[1] 4194303
[1] 8388607
[1] 16777215
[1] 33554431

However

> for (i in 0:1e9) if ( floor(log2(i)) != floor(log2(i+0.999999))) print(i)
[1] 0

Is true for any positive i within the checked range.

2

There are 2 best solutions below

0
On BEST ANSWER

The value of $f(n) = \lfloor \log_2 n \rfloor$ changes precisely when $n$ is a power of $2$ (i.e., an integer):

$$ f(2^k) = \lfloor \log_2 2^k \rfloor = \lfloor k \rfloor = k $$ but $$ f(2^k-1) = \lfloor \log_2 (2^k - 1) \rfloor \lt \lfloor \log_2 2^k \rfloor = k. $$ Since $i + 0.999999$ can never be an integer, $f(i)$ and $f(i + 0.99999)$ are always equal.

0
On

Let $$\lfloor\lg(i)\rfloor\le n\land n<\lfloor\lg(i+e)\rfloor$$ for some integer $n$.

This is equivalent to

$$\lg(i)<n+1\land n+1\le\lg(i+e)$$ or, when $i$ is an integer $$ i\le2^{n+1}-1\land 2^{n+1}\le i+e.$$

By subtraction of the inequalities,

$$1\le e.$$