# Binary

This is a free interactive resource that shows how to represent numbers using binary and convert between binary and denary, as required by the KS3 National Curriculum requirements for* Computing* and GCSE Computer Science courses. For a more in-depth discussion of number bases, including binary, look at
the *Number Bases* page in the *Mathematics* section. You can also watch an introduction to binary and examples of how computers use binary on the *Advanced ICT YouTube channel*.

## What is Binary?

Binary is simply a method for recording (i.e. storing) numbers. You might already be familiar with other methods, e.g. *4 *(digits), *four *(English), *quatre* (French), *vier* (German), IV (Roman
Numerals). These are all the same thing; they're all one more than three and one less than five.

In maths lessons we use a system called *denary*, which is based on tens. Some people think that our number system is based on tens because we have ten fingers, and we use our fingers to count. Computers don't have fingers, though - they have electrical circuits,
and electrical circuits have two states, *on* or *off*. Computers, therefore, use a number system based on *twos* - this is called *binary* (and is also known as *base 2*).

The two systems have a lot in common. In a number system based on **ten**s, often called *denary*, each column (units, tens, hundreds, etc.) has **ten** times the value of the column to its right,
and each column can contain one of **ten** values (1-9 and 0). In a number system based on **two**s, each column heading has **two** times the value of the one to its right, and there can be **two** possible values in each position.

Below is a binary number (with the column headings added) and its denary equivalent:

Click a digit to toggle between 0 and 1. Conversion from binary to denary value simply requires you to add up the headings of columns containing a one. For example, 00001010 would mean we have one 16 and one 2, giving 00010010, giving a denary value of 18. That's it!

## Investigate

Click the digits to make some numbers and check your understanding. Can you make 100? Is there only one pattern of 0s and 1s that make each number? A sequence of eight bits (0s or 1s), like the one shown above, is called a *byte*. What is the maximum number that a byte can store? If you used your 10 fingers to count in binary, you could actually count up to 1023! For an alternative view of binary, you could try using the abacus in base 2. If you're wondering how we can represent numbers that aren't positive integers, have a look at the pages on binary fractions or normalised floating-point binary.

Remember that that binary behaves in the same way as denary - as long you remember to replace the word "ten" with "two". For example, what do you notice about the largest number you can store in a given number of bits - e.g. 111 or 1111? It's one less than the heading on the first unused column - just like 99 is one less than 100, and 999 is one less than 1000. Also, look what happens when you shift the digits to the left or right - how does that compare with what happens to denary numbers?

Once you are confident in converting to and from binary, why not practise your skills with the Binary Breakout game?

## Using Binary and Further Reading

You might find it interesting to know the range of binary values that can be represented using a given number of bits, e.g. when thinking about *colour depth* or *sample size*.

We can take advantage of the fact that there is only one way to make each number by using something called *binary flags*. If, instead of 0s and 1s, we use two different colours, then we can also use binary to design a text character. Note also that when you count in binary, the bits in a column alternate between 0 and 1 with half the frequency of those in the column to its right. You can use this idea to help to you complete truth tables.

The National Curriculum for Computing and GCSE Computer Science courses expect you to be able to perform binary addition. In addition, GCSE Computer Science requres you to know how to convert directly between binary and hexadecimal.

Why not practice your programming skills by creating a program that uses these techniques? Try to create a program that will convert a decimal number to binary - I can think of at least two ways to do it (one of which uses bitwise Boolean logic). There are binary/denary conversions in the *Python* programming examples.