Search code examples
binarylogarithm

Is it possible to use logarithms to convert numbers to binary?


I'm a CS freshman and I find the division way of finding a binary number to be a pain. Is it possible to use log to quickly find 24, for instance, in binary?


Solution

  • If you want to use logarithms, you can.


    Define log2(b) as log(b) / log(2) or ln(b) / ln(2) (they are the same).

    Repeat the following:

    • Define n as the integer part of log2(b). There is a 1 in the nth position in the binary representation of b.

    • Set b = b - 2n

    • Repeat first step until b = 0.


    Worked example: Converting 2835 to binary

    • log2(2835) = 11.47.. => n = 11

      The binary representation has a 1 in the 211 position.

    • 2835 - (211 = 2048) = 787

      log2(787) = 9.62... => n = 9

      The binary representation has a 1 in the 29 position.

    • 787 - (29 = 512) = 275

      log2(275) = 8.10... => n = 8

      The binary representation has a 1 in the 28 position.

    • 275 - (28 = 256) = 19

      log2(19) = 4.25... => n = 4

      The binary representation has a 1 in the 24 position.

    • 19 - (24 = 16) = 3

      log2(3) = 1.58.. => n = 1

      The binary representation has a 1 in the 21 position.

    • 3 - (21 = 2) = 1

      log2(1) = 0 => n = 0

      The binary representation has a 1 in the 20 position.

    We know the binary representation has 1s in the 211, 29, 28, 24, 21, and 20 positions:

    2^     11 10 9 8 7 6 5 4 3 2 1 0
    binary  1  0 1 1 0 0 0 1 0 0 1 1
    

    so the binary representation of 2835 is 101100010011.