# Hexadecimal

## Converting To/From Decimal

By now, we know how to convert about 16-or-so values between decimal and hexadecimal. To convert bigger numbers, here are some tricks we use.

### Converting Decimal to Hex

Converting from decimal to hex involves a lot of division and remainders. If you've pushed long division out of your brain, wiki's always there to help you brush up.

The steps to convert a number, let's call it *N*, from decimal to hex look something like this:

- Divide
*N*by 16. The**remainder**of that division is the first (least-significant/right-most) digit of your hex number. Take the**quotient**(the result of the division) to the next step.- Note: if the remainder is 10, 11, 12, 13, 14, or 15, then that becomes the hex digit A, B, C, D, E, or F.

**Divide the quotient**from the last step by 16 again. The remainder of this division is the**second digit**of your hex value (second-from-the-right). Take the quotient from this division to the next step.- Divide the quotient from step 2 by 16 again. The remainder of this division is the
**third digit**of your hex conversion. Noticing a pattern? - Keep dividing your quotient from the last step by 16, and storing the remainder
**until the result of a division is 0**. The remainder of that division is your hex value's**left-most, most-significant digit**.

#### Decimal-to-Hex Example: Convert 61453

Enough math-speak, let's work an example. Let's convert **61453 _{10}** to hexadecimal:

- Divide 61453 by 16. The result is a
**quotient of 3840**, and a**remainder of 13**. That remainder becomes our first, right-most, least-significant hex digit -- D. Take 3840 to the next step. - Now divide 3840 by 16. The resulting quotient is 240 with a remainder of 0. Our second hex digit is 0, and we take 240 to the next digit.
- Divide 240 by 16, and you'll get 15 with another 0 remainder. Our third hex digit is 0, and take 15 to step 4.
- Finally, divide 15 by 16. That'll produce the 0 quotient we've been waiting for, with a remainder of 15. That remainder means the hex digit for this position if F.

Finally, **combine all four hex digits** to create our hex value: **0xF00D**.

### Converting Hex to Decimal

There's an ugly equation that rules over hex-to-decimal conversion:

There are a few important elements to this equation. Each of the *h* factors (*h _{n}*,

*h*) is a

_{n-1}**single digit**of the hex value. If our hex value is 0xF00D, for example,

*h*is

_{0}*D*,

*h*and

_{1}*h*are

_{2}*0*, and

*h*is

_{3}*F*.

**Powers of 16** are a critical part of hexadecimal. More-signficant digits (those towards the left side of the number) are multiplied by larger powers of 16. The least-significant digit, *h _{0}*, is multiplied by 16

^{0}(1). If a hex value is four digits long, the most-significant digit is multiplied by 16

^{3}, or 4096.

**To convert a hexadecimal number to decimal**, you need to plug in values for each of the *h* factors in the equation above. Then multiply each digit by its respective power of 16, and add each product up. Our step-by-step approach is:

- Start with the
**right-most digit**of your hex value. Multiply it by 16^{0}, that is:**multiply by 1**. In other words, leave it be, but keep that value off to the side.- Remember to convert alphabetic hex values (A, B, C, D, E, and F) to their decimal equivalent (10, 11, 12, 13, 14, and 15).

**Move one digit to the left**. Multiply that digit by 16^{1}(i.e.**multipy by 16**). Remember that product, and keep it to the side.- Move another digit left. Multiply that digit by 16
^{2}(256) and store that product. - Continue multiplying each incremental digit of the hex value by increasing
**powers of 16**(4096, 65536, 1048576, ...), and remember each product. - Once you've multiplied each digit of the hex value by the proper power of 16,
**add them all up**. That sum is the decimal equivalent of your hex value.

#### Hex-to-Decimal Example: Convert 0xC0DE

Here's an example of a four-digit hexadecimal value, 0xC0DE, that we want to convert to decimal. Creating a table and sorting the digits into separate columns can make the conversion process easier:

Hexadecimal Digit | Notes | ||||
---|---|---|---|---|---|

Digit Positions (n) | 3 | 2 | 1 | 0 | These values are statically assigned, they grow to the left. |

Hex Digits Sorted | C | 0 | D | E | This part's easy, plug your hex values in from right-to-left. |

Convert A-F | 12 | 0 | 13 | 14 | Convert hex values A-F to 10-15. |

Multiply by 16^{n} | 12 × 16^{3} | 0 × 16^{2} | 13 × 16^{1} | 14 × 16^{0} | The exponent of 16 is the position, n. |

Resulting Products | 49152 | 0 | 208 | 14 | The product of hex digit and the power of 16. |

Sum Up All Products | 49374 | Our decimal equivalent! |

There you have it. CODE_{16} = 49374_{10}!

This table method is perfect for keeping all of your hex digits, positions, and powers-of-16 in line. To convert larger hex numbers, just add a columns to the left and increase *n*.

Now that you know how to do it by hand, save yourself a little time and use a calculator.