Number Systems¶
Read time: 13 minutes (3292 words)
See also
Text, section 1.3
When we work at the level of the machine, everything is bits!
Numbers
Characters
Phases of the moon!
- The machine cannot distinguish any of this
It is up to the program to make sense of the bits
What is a number?¶
Silly question!
Just a series of digits
OK, what is a digit?
A symbol chosen to represent a number
(BRAAAAP - recursive definition. Illegal operation!)
Counting things¶
- We started counting things on our fingers
How many do we have (fingers, that is)?
- We found out that we ran out of fingers after 10 items
How can we count higher?
Toes, maybe? (Nope, shoes mess that up!)
- Try this
Count to 5 on one hand
Every time you hit 5, count by one on the other hand
You can get to 30 doing that (5 sets of five, plus 5)
Symbols for counting¶
Humans introduced the notion of writing down a set of symbols in columns to represent a quantity of things. In using our hands to count like we just did, we did this:
The right column (hand) is the lowest order count (units)
The left column (hand) represents groups of 5 counts
As the number of things to count grows, we cannot use fingers. Instead Let’s
write down the symbols in a right to left order. The number of symbols we allow
is the base
of the system. For some strange reason, humans fell in love
with 10 symbols (0 through 9)
What do the columns mean?¶
Each column, from right to left represents a specific count.
- Formally, each column is a count equal to the base raised to some power
Right-most column = base ^ zero power (1’s column)
Second column = base ^ first power (10’s column)
Third column = base ^ second power (100’s column)
and so on as far as we need
We form a number
by writing down a set of symbols. Each symbol is
multiplied by the column value and added up to get the final result.
A simple example¶
- 123 is really
3 * 10 ^ 0 = 3
plus 2 * 10 ^ 1 = 20
plus 1 * 10 ^ 2 = 100
= 123 (hopefully!)
- Is there any reason why we must use 10 symbols?
Early computer designers tried to use human symbols
It was hard to design circuits to do this
Binary numbers¶
- So, we moved to binary!
Only two symbols
Circuits are easy to design
Same rules apply, only now we only have two symbols (0 and 1)
Counting works as usual
Binary column values¶
- Base is now 2, so column values are
Right-most column = base ^ zero power (1’s column)
Second column = base ^ first power (2’s column)
Third column = base ^ second power (4’s column)
and so on as far as we need
Another example¶
- 1011 is really
1 * 2 ^ 0 = 1
plus 1 * 2 ^ 1 = 2
plus 0 * 2 ^ 2 = 0
plus 2 * 2 ^ 3 = 8
= 11
- So 1011 in binary is the same as 11 in decimal!
Notice, we work from right to left
Defining the base of the system¶
- Looking at the two numbers (1011) and (11) we have a problem
We have no way to know what the base is
use notation to solve the problem
1011b is binary
11 or 11d is decimal
- Numbers always start with a digit symbol
even in binary
What is the biggest number we can form¶
Simple, one less than the column value of the next (unused) column
- In decimal (for 3 columns)
999 = 1000 - 1
That is really 1000 numbers (including 0)
- In binary this gives (for 8 columns)
255 = 256 - 1
(256 = 2 ^ 8)
Converting a binary number to decimal¶
- We just did this! 11101b is really
1 * 1
plus 0 * 2
plus 1 * 4
plus 1 * 8
plus 1 * 16
= 29
Converting from decimal to binary¶
Rules are simple:
set result = number
- repeat
divide result by base - record new result and remainder
record remainder in column (from right to left)
- until result is zero
record last remainder as leftmost digit
Example conversion¶
- Example 29d is really
29 / 2 = 14 plus 1
14 / 2 = 7 plus 0
7 / 3 = 3 plus 1
3 / 2 = 1 plus 1
1 / 2 = 0 plus 1
= 11101b
(Be sure to check your work by converting back!)
Binary numbers are equivalent to decimal numbers¶
This idea is fundamental to the business of writing computer programs. Just because things inside the computer are in a different form does not mean they are really different.
Here is a set of A’s
A A A A A A A A A
- How many are there?
In decimal, there are 9 A’s
In binary, there are 1001b A’s
- In each number system, we are referring to the size of the same set of A’s!
Any human (decimal) number can be represented in binary in the machine!
It is all zeros and ones¶
Everything in the computer is just 0’s and 1’s. We write programs that are
smart enough to know the right rules to apply. In our next lecture, we will
explore encoding
things from our world into those 0’s and 1’s. (We just
showed part of this in looking at the difference between decimal and binary
numbers!)