Unary, where we just write `1, 11, 111…`

just goes on forever. Binary, with two options (1 and 0) looks like this:

```
1: 1
2: 10 (we’re full – tick over)
3: 11
4: 100 (we’re full again – tick over)
5: 101
6: 110
7: 111
8: 1000 (tick over again)
```

and so on …

Now, how do we convert an arbitrary binary number to its decimal equivalent? Obviously counting and matching is not an option.

Let us first look at the value of `10000...n times`

( `1 followed by n 0s`

):

This number will only come after we have tried all possible n digit numbers in the binary system which has:

```
2 * 2 * 2 * .. n times possibilities ( every position can either have 0 or 1 )
= 2^n possibility which covers numbers from 0 to 2^n - 1.
```

So, the value of 1000..n times = 2^{n}.

Now any number like `1010110`

can be expressed as `1000000 + 10000 + 100 + 10 = 2^6 + 2^4 + 2^2 + 2^1`

.

Hence, if the binary representation is `An An-1 An-2 ... A1 A0`

, then the corresponding value is

```
A0 * 2^0 + A1 * 2^1 + A2 * 2^2 + .... + An * 2^n
```

Now look at the reverse process. Which is given a decimal number N, how do we convert it to binary.

To do this conversion, we need to divide repeatedly by 2, keeping track of the remainders as we go. Watch below:

Let us say our number is 357.

Thus the number converts to 101100101

**Walkthrough Example :**

DECBIN