All Your Number Base Are Belong to Me

So in this post I talked a little bit about number bases and how they’re used in floating-point expansions. I thought I’d go a little bit more into them, since I didn’t really explain how they work.

So the number base we’re all familiar with is decimal, obviously. But not many people realize how arbitrary a choice that seems. Consider the number 10, base 10. By what reasoning do we assume that a one followed by a zero represents ten units? If you remember back to grade school, the 1 is in the “tens” place and the 0 is in the “ones” place. So what we’re actually saying when we write the notation “10” (base 10) is that we have one group of ten units, and zero groups of ones, which comes out to ten units. Or, put in another way, number base notation is a convenient way to express complicated integral additions and multiplications. Remember, \mathbf{10}_{(b10)} = (10^1\times{1})+(10^0\times{0}).

To really appreciate the arbitrary nature of our number system, you must distinguish between what we call or name things, and what the thing actually is. Notice that when I write “20”, you immediately associate that notation with a specific number, namely the sum of the number 1 a certain number of times.

But what is “20 base 10”, which I’ll call \mathbf{20}_{(b10)}, in binary? It happens to be \mathbf{10100}_{(b2)}. How do I know?

Well take a number in decimal, say \mathbf{11111}_{(b10)}. From our grade school understanding, we know this means we have one group of ones, one group of tens, one group of hundreds, one group of thousands, and one group of ten-thousands. Or, put in another way, one group of 10^0=1, one group of 10^1=10, one group of 10^2=100, one group of 10^3=1000, and one group of 10^4=10000. When we go from \mathbf{9}_{(b10)} to \mathbf{10}_{(b10)}, you can see that we overflow into the tens spot, i.e. when we go from (10^0\times{9}) to (10^1\times{1}+10^0\times{0}).

So by base 2, we mean the following. The ones place in binary is analogous to the ones place in decimal, with one distinction. Since 2^0=1, it’s still a ones place, but because it’s in base 2, when we get to 2^1=2, we overflow into the next place (or the “twos place”). So \mathbf{2}_{(b10)} is represented as \mathbf{10}_{(b2)}. When we get to 2^2=4 we overflow into the “fours place”. When we get to 2^n, for some natural number n, we overflow into the “n’s place”.

So if we wanted to write \mathbf{20}_{(b10)} in binary, we find the closest place to 20 in binary, which is 2^4=16, and put a 1 there. \mathbf{20}_{(b10)} is \mathbf{4}_{(b10)} more than \mathbf{16}_{(b10)}, so we look for the closest place to 4, which is 2^2=4, and put a 1 there. Thus we get (and pardon the poor spacing; just line up the |’s):

Places: 16 | 8 | 4 | 2 | 1
Number: 1 | 0 | 1 | 0 | 0

And the number we get is 10100 (base 2), which equals 20 (base 10).

Let’s do another example. Let’s write \mathbf{68}_{(b10)} in base 3.

Places: 81 | 27 | 9 | 3 | 1
Number: 0 | 2 | 1 | 1 | 2

In other words, (27×2)+(9×1)+(3×1)+(1×2) = 54+9+3+2 = 68. So 2112 (base 3) = 68 (base 10).

Number bases get really interesting when you start making them very large or negative. For instance, let’s look at the \mathbf{463}_{(b10)} in base 200:

Places: 16e8 | 8e6 | 40000 | 200 | 1
Number: 0 | 0 | 0 | 2 | 63

(Here, 16e8 means 16 x 10^8 and 8e6 means 8 x 10^6.) Base 200 is very interesting because of its ones place. What does the notation “63” mean in this context? It’s obviously base 10. But that makes no sense, as we’re in base 200. This means we need to define new numbers. In fact, we need to define 200-9 new numbers. Why? Because once we get to 10, we’ll mess up our notation otherwise. Consider if we just wrote this number (in base 200) as 263. 263 (base 200) is actually (2*40000)+(6*200)+(3*1) = 81203 (base 10).

How do we define new numbers? Pretty easily. Let the symbol “&” denote 63 (base 10). Thus, 2& (base 200) = 463 (base 10). A real-life analogy to this can be found by looking at the hexadecimal system, which is used in computing. The hexadecimal digits are 1 through 9, and a, b, c, d, e, and f (representing 10, 11, 12, 13, 14, and 15 in base 10 respectively).

Let’s look at base 1, just for kicks. Obviously all the place values are 1s. Which is weird. Remember, in base 10, any of the places can only go up to 9. Once we go higher than 9, we overflow to the next place. In general, for base n (where n is integral, not including zero), each place can only go up to |n|-1 before overflowing into the next place. So for base 1, each place can only go up to 1-1=0. Which means our notation fails at capturing a base 1 system. We may define a special system in this case, which is sometimes done. Define a number in base 1 as successive 1’s representing the number of units it has. So for example, \mathbf{11111}_{(b1)}=\mathbf{5}_{(bk)}, for k \geq 6. In other words, we’re just counting one at a time. So we could replace the 1’s with anything, as long as they’re the same. They’re just hatch marks, so to speak.

Let’s look at an example of a negative number base, say base -2. The place values of base -2 look like this:

Places: (-2)^4 | (-2)^3 | (-2)^2 | (-2)^1 | (-2)^0

or

Places: 16 | -8 | 4 | -2 | 1

This is very interesting. What this means is with a negative number base we can represent both negative and positive numbers using only positive numbers. For instance, \mathbf{1101}_{(b-2)} = \mathbf{-3}_{(b10)}, but \mathbf{110}_{(b-2)} = \mathbf{2}_{(b10)}. Isn’t that weird? \mathbf{1101}_{(b-2)} < \mathbf{110}_{(b-2)}. From our ethnocentric decimal intuition, this looks mighty strange. If there existed a culture that used base -2, they would find it just as intuitive as we find base 10. And they would probably scoff at the fact that we have to have a separate symbol for negative numbers in base 10!

Advertisements

4 responses to this post.

  1. this post reminds me of counting in binary using your 10 fingers
    biggest number using 10 fingers in base 10: 10
    biggest number using 10 fingers in binary: 1023

    and imagine hands + base2 + ieee 754 !

    Reply

  2. Posted by mindloop on August 1, 2007 at 1:22 pm

    Did you know that all integers can be expressed with a finite number of digits in base golden ratio?

    Reply

  3. Posted by mindloop on August 1, 2007 at 1:26 pm

    Here are the first 30 in base phi without repeating 1’s:

    1 1
    2 10.01
    3 100.01
    4 101.01
    5 1000.1001
    6 1010.0001
    7 10000.0001
    8 10001.0001
    9 10010.0101
    10 10100.0101
    11 10101.0101
    12 100000.101001
    13 100010.001001
    14 100100.001001
    15 100101.001001
    16 101000.100001
    17 101010.000001
    18 1000000.000001
    19 1000001.000001
    20 1000010.010001
    21 1000100.010001
    22 1000101.010001
    23 1001000.100101
    24 1001010.000101
    25 1010000.000101
    26 1010001.000101
    27 1010010.010101
    28 1010100.010101
    29 1010101.010101
    30 10000000.10101001

    Or, if you don’t like repeating 0’s:

    1 1
    2 1.11
    3 11.01
    4 11.1111
    5 101.1111
    6 111.0111
    7 1010.1101
    8 1011.1101
    9 1101.1101
    10 1111.0101
    11 1111.111111
    12 10101.111111
    13 10111.011111
    14 11010.110111
    15 11011.110111
    16 11101.110111
    17 11111.010111
    18 101010.10101111
    19 101011.10101111
    20 101101.10101111
    21 101110.11101111
    22 101111.11101111
    23 110101.11101111
    24 110111.01101111
    25 111010.10111111
    26 111011.10111111
    27 111101.10111111
    28 111110.11111111
    29 111111.11111111
    30 1010101.11111111

    Reply

  4. That’s awesome, mindloop! I’ve never seen that before.

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: