title=Fundamentals of Data Representation: Binary number system
Before we jump into the world of number systems we'll need a point of reference, I recommend that you copy the following table that you can refer to throughout this chapter to check your answers.
Hexadecimal  Binary  Denary 

0  0000  0 
1  0001  1 
2  0010  2 
3  0011  3 
4  0100  4 
5  0101  5 
6  0110  6 
7  0111  7 
8  1000  8 
9  1001  9 
A  1010  10 
B  1011  11 
C  1100  12 
D  1101  13 
E  1110  14 
F  1111  15 
10  0001 0000  16 
Denary/Decimal[edit]
Denary is the number system that you have most probably grown up with. It is also another way of saying base 10. This means that there are 10 different numbers that you can use for each digit, namely:
0,1,2,3,4,5,6,7,8,9
Notice that if we wish to say 'ten', we use two of the numbers from the above digits, 1 and 0.
Thousands  Hundreds  Tens  Units 

10^3  10^2  10^1  10^0 
1000  100  10  1 
5  9  7  3 
Using the above table we can see that each column has a different value assigned to it. And if we know the column values we can know the number, this will be very useful when we start looking at other base systems. Obviously, the number above is: fivethousands, ninehundreds, seventens and threeunits.
5*1000 + 9*100 + 7*10 + 3*1 = 5973_{10}
Binary[edit]
You should know denary pretty well by your age, but there are different base systems out there, and the most important one for computing is the binary base system. Binary is a base2 number system, this means that there are two numbers that you can write for each digit:
0, 1
With these two numbers we should be able to write (or make an approximation) of all the numbers that we could write in denary.
Onehundred and twentyeights  Sixtyfours  Thirtytwos  Sixteens  Eights  Fours  Twos  Units 

2^7  2^6  2^5  2^4  2^3  2^2  2^1  2^0 
128  64  32  16  8  4  2  1 
0  1  1  0  1  0  1  0 
Using the above table we can see that each column has a value assigned to it that is the power of two (the base number!), and if we take those values and the corresponding digits we can work out the value of the number: 1*64 + 1*32 + 1*8 + 1*2 = 106.
If you are asked to work out the value of a binary number, the best place to start is by labelling each column with its corresponding value and adding together all the columns that hold a 1. Let's take a look at another example:
00011111_{2}
128  64  32  16  8  4  2  1 

0  0  0  1  1  1  1  1 
So now all we need to do is to add the columns containing 1s together: 1*16 + 1*8 + 1*4 + 1*2 + 1*1 = 31
Exercise: Binary
Convert the following binary numbers into denary 00001100_{2} Answer:
8+4 = 12_{10} 01011001_{2} Answer:
64 + 16 + 8 + 1 = 89_{10} 00000111_{2} Answer:
4 + 2 + 1 = 7_{10} 01010101_{2} Answer:
64 + 16 + 4 + 1 = 85_{10} How do we tell if a binary number is odd? Answer: Its right most digit is a one Is there a short cut to working out a binary number that is made of solid ones, such as: 01111111_{2} Answer: Yes, take the first 0's column value and minus one
= 128  1 = 127 = 64 + 32 + 16 + 8 + 4 + 2 + 1 00001111_{2} = 16  1 = 15 = 8 + 4 + 2 + 1 00000111_{2} = 8  1 = 7 = 4 + 2 + 1 If we were to use octal, a base 8 number system, list the different numbers each digit could take: Answer: 0, 1, 2, 3, 4, 5, 6, 7 
Max and range[edit]
A common question that you'll need to know the answer to, and one that many people get wrong, is a question about the maximum denary value you can store in a set number of binary digits, or alternatively, the range of values that you can store in a set number of binary digits. Read carefully, these are not the same thing.
Consider the following example:
If I were to have 3 binary digits, the maximum value that I could store would be 111_{2}, this equates to 4 + 2 + 1 = 7_{10}.
If I were to be asked, the range of numbers then we have 8 options:
# 000 # 001 # 010 # 011 # 100 # 101 # 110 # 111
We could count these all out and write down: "There are 8 different values 3 binary digits can take". But this isn't very clever, what is you wanted to find out the range and maximum values for 34 bits, you can't be expected to write them all out. We are looking for a rule to save us the job and stop us making mistakes. Can you work out a rule in terms of for:
Maximum denary value of binary digits:
Rule:  
Maximum denary value = For example, for 3 digits: As calculated previously 
Number of different values for binary digits:
Rule:  
Number of values = For example, for 3 digits: As calculated previously 
Exercise: Max and range of binary numbers
Give both the maximum value and number of different values for the following n binary digits: 4 Answer: Maximum : Range : 5 Answer: Maximum : Range : 8 Answer: Maximum : Range : 10 Answer: Maximum : Range : For an address bus with 6 wires, what is the highest address that can be given? How many addresses can accessed? Answer: highest address : Different number of addresses : This is a very popular exam question! 
Hexadecimal[edit]
You may notice from the table that one hexadecimal digit can represent exactly 4 binary bits. Hexadecimal is useful to us as a shorthand way of writing binary, and makes it easier to work with long binary numbers.
Hexadecimal is a base16 number system which means we will have 16 different numbers to represent our digits. The only problem being that we run out of numbers after 9, and knowing that 10 is counted as two digits we need to use letters instead:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
We can do exactly the same thing as we did for denary and binary, and write out our table.
16^5  16^4  16^3  16^2  16^1  16^0 

1 048 576  65536  4096  256  16  1 
0  0  3  4  A  F 
So now all we need to do is to add the columns containing values together, but remember that A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
3*4096 + 4*256 + (A)10*16 + (F)15*1 = 13487_{16}
You might be wondering why we would want to use hexadecimal when we have binary and denary, and when computer store and calculate everything in binary. The answer is that it is entirely for human ease. Consider the following example:
Representation  Base 

EFFE11  base16 hexadecimal 
15728145  base10 denary 
111011111111111000010001  base2 binary 
All the numbers are the same and the easiest version to remember/understand for humans is the base16. Hexadecimal is used in computers for representing numbers for human consumption, having uses for things such as memory addresses and error codes. NOTE: Hexadecimal is used as it is shorthand for binary and easier for people to remember. It DOES NOT take up less space in computer memory, only on paper or in your head! Computers still have to store everything as binary whatever it appears as on the screen.
Exercise: Hexadecimal
Convert the following Hex numbers into decimal/denary: Answer: 16 1 A 1 16 * 10 + 1 * 1 = 161_{10} FF Answer: 16 1 F F 16 * 15 + 1 * 15 = 255_{10} 0D Answer: 16 1 0 D 16 * 0 + 1 * 13 = 13_{10} 37 Answer: 16 1 3 7 16 * 3 + 1 * 7 = 55_{10} Why would we use the Hexadecimal system? Answer: Hexadecimal is used for humans, it is easier to understand and write Name a use of the hexadecimal system Answer: Hexadecimal is used for error message codes and memory addresses 
Converting Between Bases[edit]
The sum that you saw previously to convert from hex to denary seemed a little cumbersome and in the exam you wouldn't want to make any errors, we therefore have to find an easier way to make the conversion.
Since 4 binary bits are represented by one hexadecimal digit, it is simple to convert between the two. You can group binary bits into groups of 4, starting from the right, and adding extra 0's to the left if required, and then convert each group to their hexadecimal equivalent. For example, the binary number 0110110011110101 can be written like this:
0110 1100 1111 0101
and then by using the table above, you can convert each group of 4 bits into hexadecimal:
0110 1100 1111 0101 6 C F 5
So the binary number 0110110011110101 is 6CF5 in hexadecimal. We can check this by converting both to denary. First we'll convert the binary number, since you already know how to do this:
32768  16384  8192  4096  2048  1024  512  256  128  64  32  16  8  4  2  1 

0  1  1  0  1  1  0  0  1  1  1  1  0  1  0  1 
By multiplying the columns and then adding the results, the answer is 27893.
Notice that the column headings are all 2 raised to a power, , , , , and so on. To convert from hexadecimal to denary, we must use column headings that are powers with the base 16, like this:
4096  256  16  1 

6  C  F  5 
(You should memorize the values AF)
Totalling them all up gives us 27893, showing that 0110110011110101 is equal to 6CF5.
To convert from denary to hexadecimal, it is recommended to just convert the number to binary first, and then use the simple method above to convert from binary to hexadecimal.
In summary, to convert from one number to another we can use the following rule: Hexadecimal <> Binary <> Denary
Exercise: Hexadecimal and Base Conversion
Convert the following Hexadecimal values into Denary: 12_{16} Answer: 1 2 (Hex) 0001 0010 (Binary) 128 64 32 16 8 4 2 1 0 0 0 1 0 0 1 0 = 16+2 = 18 (decimal) A5_{16} Answer: A 5 (Hex) 1010 0101 (Binary) 128 64 32 16 8 4 2 1 1 0 1 0 0 1 0 1 = 128+32+4+1 = 165 (decimal) 7F_{16} Answer: 7 F (Hex) 0111 1111 (Binary) 128 64 32 16 8 4 2 1 0 1 1 1 1 1 1 1 = 64+32+8+4+2+1 = 127 (decimal) 10_{16} Answer: 1 0 (Hex) 0001 0000 (Binary) 128 64 32 16 8 4 2 1 0 0 0 1 0 0 0 0 = 16(decimal) Convert the following Binary numbers into hex: 10101101_{2} Answer: 1010 1101 (Binary) A D (Hex) 110111_{2} Answer: 0011 0111 (Binary) 3 7 (Hex) 10101111_{2} Answer: 1010 1111 (Binary) A F (Hex) 111010100001_{2} Answer: 1110 1010 0001 (Binary) E A 1 (Hex) Convert the following decimal numbers into hex: 87_{10} Answer: 128 64 32 16 8 4 2 1 0 1 0 1 0 1 1 1 = 64+16+4+2+1 = 87(decimal) 0101 0111 (Binary) 5 7 (Hex) 12_{10} Answer: 128 64 32 16 8 4 2 1 0 0 0 0 1 1 0 0 = 8+4 = 12(decimal) 0000 1100 (Binary) 0 C (Hex) 117_{10} Answer: 128 64 32 16 8 4 2 1 0 1 1 1 0 1 0 1 = 64+32+16+4+1 = 117(decimal) 0111 0101 (Binary) 7 5 (Hex) Why might you use Hexadecimal? Answer: So that it makes things such as error messages and memory address easier for humans understand and remember Give two uses of hexadecimal? Answer:
