COMPUTER BASICS: HEXADECIMAL AND BINARY NUMBERS.....................Rick Ryall
Hexadecimal and binary are two words that appear frequently in computer
magazines, machine manuals, and other computer related literature. Most often
the text uses the terms assuming that you, the reader, already know what is
meant by them, and there is a good chance that you don't. This article will
explain a little bit about what is meant by hexadecimal and binary numbers,
and also how you can convert them into something that you understand (if you
are willing to do a little bit of work). If it appears to be going too fast
for you, read it through once, not understanding what you are reading, and
then come back to it again later. Often this will help things sink in.
Before launching into the subject, it is necessary to review something
with which we are all familiar and use quite often, but probably don't
remember how it works: our numbering system. Our numbering system is based
on ten digits (0-9), undoubtedly because most of us have ten extensions
sticking out of our hands that are useful for counting (If our prehistoric
ancestors had been born with only 8 fingers and thumbs, I bet our numbering
system would be quite different). It is called the base 10 numbering system,
and 10 is called the "base". This means, in terms with which we are
familiar, we start counting at 0 and continue until we reach 9, then we go
to 10 and count until we reach 19, then we go to 20, and so on. We
always count ten numbers in the far right column before any of the columns
on the left change. Notice a relationship? We count ten numbers and a
column to the left changes. The base for our numbering system is ten. The
base is the key. Remember this, it is important.
If we look at some larger numbers, we will notice something interesting
about them. Take, for instance, the number 2,379. What does the "2" stand
for? It stands for 2 thousands, in the same way that the "3" stands for 3
hundreds, the "7" for 7 tens, and the "9" for 9 ones. If you can remember
back to grammar school, we called these columns the ones column, the tens
column, the hundreds column, and the thousands column. The interesting thing
is that each column is ten times as big in value as the column to its right
and that ten is the base. The base is the key. Another way of looking at the
number 2,379 is that it is equal to (2 x 1000) + (3 x 100) + (7 x 10) + (1 x
1) which in turn is equal to 2000 + 300 + 70 + 9.
Now let's look at binary numbers. Computers do not have hands or fingers
and they are not the least bit intelligent, so they count in a very simple
manner. They count to 1. That's right, the machines that baffle us with the
speed and accuracy with which they can perform mathematical computations are
only capable of counting to 1 (we're not that much better, since we really
only count from 0 to 9). Computers use base 2 (there are only two counting
numbers, 0 and 1) when they count, hence the name "binary". This means that
they start counting at 0, continue up to 1, and then what? What comes after
1? Well, 10 comes after 1, but you have to remember that it is 10 base two,
not 10 base ten. If you add one more to 10 (in base two) you get 11. If you
add one more to that you get 100 (base two). Let's see why.
Remember how each column in our numbering system is ten times as large in
value as the column to the right? It is the same in base two, except each
column is two times as large as the column on its right. As an example,
consider the number 10010110 in base two. The column on the extreme right is
the ones column (just like in our numbering system). The second column to the
left of the first is the twos column. The third column is the fours column,
the fourth is the eights column, the fifth is the sixteens column, the sixth
is the thirty-twos column, the seventh is the sixty-fours column, and the
eighth is the one-hundred-and-twenty-eights column. Each column is two times
as large as the column to its right, so the example number would equal (1 x
128) + (0 x 64) + (0 x 32) + (1 x 16) + (0 x 8) + (1 x 4) + (1 x 2) + (0 x 1),
or 150. All this because a computer can't count past one.
Now that we know this, it is possible to quickly figure out some of the
simpler binary numbers. What is 10 base two? 10 = (1 x 2) + (0 x 1), which
is 2 in our numbering system. That means that 11 base two = (1 x 2) + (1 x
1), which is 3, and that 100 base two = (1 x 4) + (0 x 2) + (0 x 1), which is
4. Not all that complex, is it? When the numbers get long, like when they
have more than 8 numerals in them, you might need some scratch paper or a
calculator but the method doesn't get any more complex.
Ready to tackle hexadecimal numbers? They are a little bit tougher than
binary numbers because the base is 16, so read carefully. While the binary
numbering system only needed two of the digits (0 and 1) from our base 10
counting numbers, the hexadecimal numbering system needs 16. Unfortunately,
there are only 10 from which to choose and that leaves us six short. This is
where the confusion begins. The six digits needed to complete the hexadecimal
numbers were borrowed from the alphabet, beginning with A and ending with F,
so if you were counting you would start with 0 and count to F before you
reached 10 (in base 16) like this: 0,1,2,3,4,5,6,7,8,9,A, B,C,D,E,F, where A =
10 (base 10), B = 11 (base 10), C = 12 (base 10), D = 13 (base 10), E = 14
(base 10), and F = 15 (base 10). Instead of counting from 0 to 9 in the ones
column, you count from 0 to F.
OK, time to decipher a hexadecimal number, which will help make clear
what was just stated. We will start with 1B. The column on the extreme right
is the ones column (just like in our numbering system). The column on the
left is 16 times the ones column or the sixteens column (remember that the
base is the key). That means that 1B = (1 x 16) + (B x 1) = 16 + B = 16 + 11
(remember that B = 11 in base 10) = 27 (base 10). Let's take another, 21. 21
= (2 x 16) + (1 x 1) = 32 + 1 = 33 (base 10). Do you see how it works?
The next logical question is why would anyone want to use such a
cumbersome numbering system? To find out, let's look at a four digit
hexadecimal number, EA65. We already know that the first two columns are the
ones column and the sixteens column. Can you guess what the next two will
be? Remember that each column is sixteen times greater than the column to
its right and you have got it. Column 3 is the two-hundred-fifty-sixes
column and column 4 is the four-thousand-and-ninety-sixes column. Knowing
that, EA65 = (E x 4096) + (A x 256) + (6 x 16) + (5 x 1) = (14 x 4096) + (10 x
256) + (6 x 16) + (5 x 1) = 57,344 + 2560 + 96 + 5 = 60,005 (base 10).
Quite a large number for only four digits, eh? That is why someone would
go to such lengths to use this numbering system, because all the addressable
memory in an eight bit microprocessor like the one in our Kaypro machines can
be represented by four digits. Most of the references that are expressed in
hexadecimal numbers are either ASCII codes or memory locations. It's a
kind of computer shorthand.
Although there are probably people out there that can do it, I have yet
to meet someone who can translate any arbitrary four digit hexadecimal number
into base 10 in his head, so don't feel bad if you need a calculator to figure
one of these numbers out. It is possible, with a little practice, to memorize
some of the more common ones, though. This happens naturally when you use
something over and over again. Since most of you will not have an opportunity
to use these numbers over and over again, don't be overly impressed with
someone who can spout them off like a grocery list. You can do the same thing
in any area that you are familiar with, like classic literature, or auto
mechanics, or travel.
That is all there is to binary and hexadecimal numbers. I hope that you
came away with an idea of what they are, at least, and maybe a better
understanding of how to convert them to our numbering system.
[ Excerpted from our April 1985 newsletter - Ed. ]