# Binary, Decimal, Hexadecimal

2019-01-14

# Representation of different bases, and converting to decimal

## Decimal

We think of decimal as the base-10 system. The set of all decimal digits is \(\{0,1,2,3,4,5,6,7,8,9\}\).

Imagine we have a number 42 (base ten). We could rewrite it as each digit multiplied by a power of ten, like so: \(42 = 4 * 10^1 + 2 * 10^0\).

## Binary

The set of all binary digits is \(\{0,1\}\).

The same idea is true for binary numbers, also known as the base-2 system. Imagine we have a number 101010 (base two). We could rewrite it as each digit multiplied by a power of two, like so: \(101010_2 = 1 * 2^5 + 0 * 2^4 + 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0\). If we wanted to get the decimal version of this, we could just simplify: \(1 * 2^5 + 1 * 2^3 + 1 * 2^1 = 32 + 8 + 2=42\).

## Hexadecimal

The set of all hexadecimal digits is \(\{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F\}\), where A-F have decimal values of 10-15 respectively.

The same idea is true for hexadecimal numbers, also known as the base-16 system. Imagine we have a number 2A (base sixteen). We could rewrite it as each digit multiplied by a power of sixteen, like so: \(2A_{16} = 2 * 16^1 + 10 * 16^0\). If we wanted to get the decimal version of this, we could just simplify: \(2 * 16^1 + 10 * 16^0 = 32 + 10 = 42\).

## Bringing it together: binary and hexadecimal to decimal

Above, we have seen that finding the value of a binary or hexadecimal number in decimal simply requires writing out each digit multiplied by its place value and then simplifying.

# Converting decimal to binary or hexadecimal by repeated division

A technique for converting to either binary or hexadecimal is to take the number in decimal and successively divide by either 2 or 16 (depending on the target base), using the remainders to construct the resultant number. Say we want to convert 42 to binary. We would start to divide by 2:

\[ \require{enclose} \begin{array}{rll} 21\\[-3pt] 2 \enclose{longdiv}{42}\kern-.2ex \\[-3pt] \underline{42} \\[-3pt] 0 \\[-3pt] \end{array} \]

Now, we know that the rightmost digit of the resulting binary number is 0, as that is the remainder of the division. We continue by dividing the previous quotient again:

\[ \require{enclose} \begin{array}{rll} 10\\[-3pt] 2 \enclose{longdiv}{21}\kern-.2ex \\[-3pt] \underline{20} \\[-3pt] 1 \\[-3pt] \end{array} \]

The remainder is 1, so the next digit to the left is a 1. Continue dividing until the quotient is 0 (the intermediate three divisions are left as an exercise for the reader):

\[ \require{enclose} \begin{array}{rll} 0\\[-3pt] 2 \enclose{longdiv}{1}\kern-.2ex \\[-3pt] \underline{0} \\[-3pt] 1 \\[-3pt] \end{array} \]

The final remainder is 1, so the leftmost digit of the resulting binary number is 1. Writing all the results next to each other, we get a result of 101010.

The same technique works for converting to hexadecimal (simply divide by 16 repeatedly instead of 2). This technique generalizes to other bases as well.