📺 Would you prefer to learn about binary numbers from video lessons? Just skip this article and continue to the videos instead.
As humans, we typically represent numbers in the decimal system. Counting to ten is as simple as $1$, $2$, $3$, $4$, $5$, $6$, $7$, $8$, $9$, $10$.
As we just learned, computers represent all information in bits. In order to represent numbers with just $\texttt{0}$s and $\texttt{1}$s, computers use the binary number system. Here's what it looks like when a computer counts to ten: $\texttt{0}\texttt{0}\texttt{0}\texttt{1}$, $\texttt{0}\texttt{0}\texttt{10}$, $\texttt{0}\texttt{0}\texttt{11}$, $\texttt{0}\texttt{10}\texttt{0}$, $\texttt{0}\texttt{101}$, $\texttt{0}\texttt{110}$, $\texttt{0}\texttt{111}$, $\texttt{1}\texttt{0}\texttt{0}\texttt{0}$, $\texttt{1}\texttt{0}\texttt{0}\texttt{1}$, $\texttt{1010}$.
Refresher: Decimal numbers
Before exploring how the binary system works, let's revisit our old friend, the decimal system. When you learned how to count, you might have learned that the right-most digit is the "ones' place", the next is the "tens' place", the next is the "hundreds' place", etc.
Another way to say that is that the digit in the right-most position is multiplied by $1$, the digit one place to its left is multiplied by $10$, and the digit two places to its left is multiplied by $100$.
Let's visualize the number $234$:
| $2$ | $3$ | $4$ |
|---|---|---|
| hundreds' place | tens' place | ones' place |
| $ 100$ | $10$ | $1$ |
When we multiply each digit by its place, we can see that $234$ is equal to $(2 \times 100) + (3 \times 10) + (4 \times 1)$.
We can also think of those places in terms of the powers of ten. The ones' place represents multiplying by $10^0$, the tens' place represents multiplying by $10^1$, and the hundreds' place represents multiplying by $10^2$. Each place we add, we're multiplying the digit in that place by the next power of $10$.
| 2 | 3 | 4 |
|---|---|---|
| hundreds' place | tens' place | ones' place |
| $ 100$ | $10$ | $1$ |
| $10^2$ | $10^1$ | $10^0$ |
Binary numbers
The binary system works the same way as decimal. The only difference is that instead of multiplying the digit by a power of $10$, we multiply it by a power of $2$.
Let's look at the decimal number $1$, represented in binary as $\texttt{0}\texttt{0}\texttt{0}\texttt{1}$:
$\texttt{0}$ | $\texttt{0}$ | $\texttt{0}$ | $\texttt{1}$
- | - | - | -
$8$ | $4$ | $2$ | $1$
$2^3$ | $2^2$ | $2^1$ | $2^0$
That's the same as $(0 \times 8) + (0 \times 4) + (0 \times 2) + (1 \times 1)$, or $0 + 0 + 0 + 1$.
Okay, perhaps you could have guessed that one — now for a bigger number!
The decimal number $10$ is represented in binary as $\texttt{1010}$:
$\texttt{1}$ | $\texttt{0}$ | $\texttt{1}$ | $\texttt{0}$
- | - | - | -
$8$ | $4$ | $2$ | $1$
$2^3$ | $2^2$ | $2^1$ | $2^0$
That's the same as $(1 \times 8) + (0 \times 4) + (1 \times 2) + (0 \times 1)$, or $8 + 0 + 2 + 0$. Indeed, binary $\texttt{1010}$ equals the decimal $10$.
[[☃ graded-group 1]]
If you managed to figure that out, congratulations! If not, that's totally expected: there are techniques that will help you convert between the number systems, and it's much easier when you learn those techniques.
Converting decimal to binary
Here's my favorite way to convert decimal numbers to binary:
- Grab a piece of paper or a whiteboard.
- Draw dashes for each of the bits. If the number is less than $16$, draw $4$ dashes. Otherwise, for numbers up to $255$, draw $8$ dashes. Bigger numbers than that require more bits and take a while to do by hand, so let's focus on the smaller numbers.
- Write the powers of $2$ under each dash. Start under the right-most dash, writing $1$, then keep multiplying by $2$.
- Now start at the left-most dash and ask yourself "Is the number greater than or equal to this place value?" If you answer yes, then write a $1$ in that dash and subtract that amount from the number. If you answer no, then write a $0$ and move to the next dash.
- Keep going from left to right, keeping track of how much remainder you still need to represent. When you're done, you'll have converted the number to binary!
Here's what that looks like for the decimal number $6$:
"Hmm, 6 is less than 16, so 4 bits is plenty..."
$\dfrac{}{8}$
$\dfrac{}{4}$
$\dfrac{}{2}$
$\dfrac{}{1}$
"Well, 6 is less than 8, so I'll write a 0 first..."
$\dfrac{0}{8}$
$\dfrac{}{4}$
$\dfrac{}{2}$
$\dfrac{}{1}$
"6 is bigger than 4, so I'll write a 1 next..."
$\dfrac{0}{8}$
$\dfrac{1}{4}$
$\dfrac{}{2}$
$\dfrac{}{1}$
"Ok, 6 - 4 = 2, so I still need to represent 2. Let me note that..."
$\dfrac{0}{8}$
$\dfrac{1}{4}$
$\dfrac{}{2}$
$\dfrac{}{1}$
$\text{(Remainder: 2)}$
"2 is equal to 2, so I'll write a 1 next..."
$\dfrac{0}{8}$
$\dfrac{1}{4}$
$\dfrac{1}{2}$
$\dfrac{}{1}$
"2 - 2 = 0, so there's nothing left to represent!"
$\dfrac{0}{8}$
$\dfrac{1}{4}$
$\dfrac{1}{2}$
$\dfrac{}{1}$
$\text{(Remainder: 0)}$
"I'll fill a 0 in the last bit, since I'm all done now..."
$\dfrac{0}{8}$
$\dfrac{1}{4}$
$\dfrac{1}{2}$
$\dfrac{0}{1}$
In case you're wondering: there's only one way to represent any given number in binary, just like there's only one way to represent any given number in decimal. Any technique that you use for converting a decimal to binary number should yield the same number.
Try another conversion now, using that technique or your own.
[[☃ graded-group 1]]
[[☃ graded-group 1]]
Patterns in binary numbers
In those last two questions, you converted odd numbers. There's something interesting about odd numbers in binary. Here are a few more odd numbers to give you an idea:
Decimal | Binary
- | - | -
$3$ | $\texttt{0}\texttt{0}\texttt{11}$
$5$ | $\texttt{0}\texttt{101}$
$7$ | $\texttt{0}\texttt{111}$
$9$ | $\texttt{10}\texttt{01}$
Do you see the pattern?
[[☃ graded-group 1]]
You don't actually need to convert those large numbers to decimal to answer the question—you only need to look at a single bit of information—the very last bit. The last bit is always the ones' place, and if a number is odd, it must have a $1$ in that ones' place. There's no way to create an odd number in the binary system without that ones' place, since every other place is a power of $2$. Knowing this can give you a better intuitive understanding of binary numbers.
There's another interesting pattern in binary numbers. Take a look at these:
| Decimal | Binary |
|---|---|
| $3$ | $\texttt{11}$ |
| $7$ | $\texttt{111}$ |
| $15$ | $\texttt{1111}$ |
Each of the decimal numbers are a power of $2$, minus $1$: $4-1=3$, $8-1=7$, $16-1=15$. When a binary number has a $1$ in each of its places, then it will always equal the largest number that can be represented by that number of bits. If you want to add $1$ to that number, you need to add another bit. It's like $9$, $99$, and $999$ in the decimal system.
As it turns out, the highest number that can be represented by $n$ bits is the same as $2^n - 1$:
Bits ($n$) | Highest number | ($2^n - 1$)
- | - | - | -
1 | $1$ | $(2^1 - 1)$
2 | $3$ | $(2^2 - 1)$
3 | $7$ | $(2^3 - 1)$
4 | $15$ | $(2^4 - 1)$
[[☃ graded-group 2]]
You could calculate that using our strategy from before fairly quickly. However, there's one more strategy, keeping in mind what we just learned: you could count the number of bits ($5$), calculate $2^5$ as $2 \times 2 \times 2 \times 2 \times 2 = 32$, and then subtract $1$.
All of this is to help you gain a more intuitive understanding of binary. You may not remember all of this, and that's okay. There's lots of practice coming up for you to build your skills.