The hexadecimal numeral system, often shortened to "hex", is a numeral system made up of 16 symbols (base 16). The standard numeral system is called decimal (base 10) and uses ten symbols: 0,1,2,3,4,5,6,7,8,9. Hexadecimal uses the decimal numbers and six extra symbols. There are no numerical symbols that represent values greater than ten, so letters taken from the English alphabet are used, specifically A, B, C, D, E and F. Hexadecimal A = decimal 10, and hexadecimal F = decimal 15.

Humans mostly use the decimal system. This is probably because humans have ten fingers (ten digits)[source?]. Computers however, only have on and off, called a binary digit (or bit, for short). A binary number is just a string of zeros and ones: 11011011, for example. For convenience, engineers working with computers tend to group bits together. In earlier days, such as the 1960's, they would group 3 bits at a time (much like large decimal numbers are grouped in threes, like the number 123,456,789). Three bits, each being on or off, can represent the eight numbers from 0 to 7: 000 = 0; 001 = 1; 010 = 2; 011 = 3; 100 = 4; 101 = 5; 110 = 6 and 111 = 7. This is called octal.

As computers got bigger, it was more convenient to group bits by four instead of three. This doubles the numbers that the symbol would represent; it can have 16 values instead of eight. Hex = 6 and Decimal = 10, so it is called hexadecimal. Four bits is called a nibble (sometimes spelled nybble). A nibble is one hexadecimal digit, and is written using a symbol 0-9 or A-F. Two nibbles is a byte (8 bits). Most computer operations use the byte, or a multiple of the byte (16 bits, 24, 32, 64, etc.). Hexadecimal makes it easier to write these large binary numbers.

To avoid confusion with decimal, octal or other numbering systems, hexadecimal numbers are sometimes written with a "h" after the number. For example, 63h means 63 hexadecimal. Software developers quite often use 0x before the number (0x63).

## Contents

Hexadecimal is similar to the octal numeral system (base 8) because each can be easily compared to the binary numeral system. Hexadecimal uses a four-bit binary coding. This means that each digit in hexadecimal is the same as four digits in binary. Octal uses a three-bit binary system.

In the decimal system, the first digit is the one's place, the next digit to the left is the ten's place, the next is the hundred's place, etc. In hexadecimal, each digit can be 16 values, not 10. This means the digits have the one's place, the sixteen's place, and the next one is the 256's place. So 1h = 1 decimal, 10h = 16 decimal, and 100h = 256 in decimal.

Example values of hexadecimal numbers converted into binary, octal and decimal.

Hex Binary Octal Decimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
A 1010 12 10
B 1011 13 11
C 1100 14 12
D 1101 15 13
E 1110 16 14
F 1111 17 15
10 1 0000 20 16
11 1 0001 21 17
24 10 0100 44 36
5E 101 1110 136 94
100 1 0000 0000 400 256
3E8 11 1110 1000 1750 1000
1000 1 0000 0000 0000 10000 4096
FACE 1111 1010 1100 1110 175316 64206

## Conversion

Changing a number from binary to hex uses a grouping method. The binary number is separated into groups of four digits starting from the right. These groups are then converted to hexadecimal digits as shown in the chart above for the hexadecimal numbers 0 through F. To change from hexadecimal, the reverse is done. The hex digits are each changed to binary and the grouping is usually removed.

Binary Groupings Hex
01100101 0110 0101 65
010010110110 0100 1011 0110 4B6
1101011101011010 1101 0111 0101 1010 D75A

When the quantity of bits in a binary numbers is not a multiple of 4, it is padded with zeros to make it so. Examples:

• binary 110 = 0110, which is 6 Hex.
• binary 010010 = 00010010, which is 12 Hex.

To convert a number from hexadecimal to decimal, there are two common ways.

The first method is more commonly done when converting it manually:

1. Use the decimal value for each hexadecimal digit. For 0-9, it is the same, but A = 10, B = 11, C = 12, D = 13, E = 14, and F = 15.
2. Keep a sum of the numbers converted at each step below.
3. Start with the least significant hexadecimal digit. That is the digit on the right end. This will be the first item in a sum.
4. Take the second-least significant digit. That is next to the digit on the right end. Multiply the decimal value of the digit by 16. Add this to the sum.
5. Do the same for the third-least significant digit, but multiply it by 162 (that is, 16 squared, or 256). Add it to the sum.
6. Continue for each digit, multiplying each place by another power of 16. (4096, 65536, etc.)
Location
6 5 4 3 2 1
Value 1048576 (165) 65536 (164) 4096 (163) 256 (162) 16(161) 1 (160)

The next method is more commonly done when converting a number in software. It doesn't need to know how many digits the number has before it starts, and it never multiplies by more than 16, but it looks longer on paper.

1. Use the decimal value for each hexadecimal digit. For 0-9, it is the same, but A = 10, B = 11, C = 12, D = 13, E = 14, and F = 15.
2. Keep a sum of the numbers converted at each step below.
3. Start with the most significant digit (the digit on the far left). This is the first item in the sum.
4. If another digit exists, multiply the sum by 16 and add the decimal value of the next digit.
5. Repeat the above step until there are no more digits.

Example: 5Fh and 3425h to decimal, method 1

5Fh to decimal
Hex Decimal
5Fh = ( 5 x 16 ) + ( 15 x 1 )
= 80 + 15
5Fh = 95

3425h to decimal
Hex Decimal
3425h = ( 3 x 4096 ) + ( 4 x 256 ) + ( 2 x 16) + ( 5 x 1 )
= 12288 + 1024 + 32 + 5
3425h = 13349

Example: 5Fh and 3425h to decimal, method 2

5Fh to decimal
Hex Decimal
sum = 5
= (5 x 16) + 15
sum = 80 + 15 (no more digits)
5Fh = 95

3425h to decimal
Hex Decimal
sum = 3
= (3 x 16) + 4 = 52
sum = (52 x 16) + 2 = 834
sum = (834 x 16) + 5 = 13349
3425h = 13349