A gentle (smile) introduction to hexadecimal (base 16).

Decimal numbers

In our standard decimal system each digit (which can be 0,1,2,3,4,5,6,7,8,9) in a number represents a power of ten in that place:

Hexadecimal numbers

The hexidecimal (base 16) system is similar, except that each digit represents a power of 16 in that place.

Because a digit can have values greater than 9, there are additional digit symbols allowed in hex:

  • A (10), B (11), C (12), D (13), E (14) and F (15)

To convert a decimal number to hex, you remove multiples of those powers of 16 as shown below.


Binary numbers

In the binary (base 2) system, each digit is a power of two, and the digits are just 0 and 1.

Because 16 is a power of 2 (2^4), every hex digit corresponds to a set of 4 binary digits ("bits"), with each digit representing a power of 2:

decimalhexbinary
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
10A1010
11B1011
12C1100
13D1101
14E1110
15F1111

It's easy to translate a hexadecimal number into binary because you can decompose each hex digit into its 4 bits.

The benefit of using hexadecimal instead of binary, is that hex is much shorter to write, but still lets us easily determine the value of specific bits.

Octal numbers

Another popular base in the computer world is octal – (base 8) where each digit is a power of 8, and digits are 0, 1, 2, 3, 4, 5, 6, 7.

Since 8 is also a power of 2 (2^3), each octal digit corresponds directly to 3 binary bits. So octal is more compact than binary, but less compact than either decimal or hexadecimal.