Geek topic of the day: Numbering Systems.

As you may or may not know, there are many ways to count. Many of you have heard of binary, decimal and hexadecimal (sometimes shortened to “hex”). Each of tXKCD 99, Binary Hearthese are ways to represent a value. For example, if we have eleven apples, we can say we have 11d, 0xB, or 1011b apples. If the numbering system is understood between both parties, it could be written as 11, B, or 1011. Obviously, I have these numbers in the order of decimal, hexadecimal, and binary.

There are many ways to represent a number and the three I mentioned aren’t the only ones. If you want base5, your numbers are 0,1,2,3,4, or [0..4]. The number 8d would be 13 in base5. The number 54d in base 33 [0..9,A..W] would be 1L. Obviously, you have to define what your characters represent with numbers from another base. (In this case, A = 10d, L = 21d and W = 32d. 10 = 33d, 1W = 65d, 20 = 66d, and so on.)

Anyway, here is the reason this came up in my mind. There is an easy program which was needed at work. So they hacked out a simple VB (Visual Basic) script to get the necessary information. I would have preferred a “real” language which is also easy to program (such as C#). This would have the advantage of being fewer lines of code, not as bloated (still bloated), and can be compiled to an executable file (.exe).

Computer Language HierarchyOf course, I like to make things difficult while making it easy for others. I thought, why not do this in assembly language? It will be ultra fast and small and not be dependent on other systems (such as dotNET). So I found www.asmcommunity.net. It is a resource for people wanting to learn assembly language. The second chapter in their book is “Number Systems”

Here’s the wrap-up. The second to last sentence of their section on Base (what I explained above) is “Base-0 does not exist and you cannot do much with base-1.” Base 1 is easy, there is only one number – 0, if you will. Or 1. It doesn’t matter, there is only one character to represent the entire numbering system and there is nothing or that character – that’s it). In base 1, you could even make your only value, your only digit, Ψ.

This got me thinking about base 0, though. Base 0 has no values. It will have no characters. It is nothing – not even 0. It’s what happens when you divide by 0 – you can’t (excluding 0/0 which is ∞). Divided By Zero
This base system is really, completely useless… except to explain it like I have here.

Surprisingly, my little thought process here is not at all off, in fact it is quite on. Here is a post by someone else who has put in a lot more thought on off-beat numbering systems (a system based on pi, e, or i?!) . Scroll down a bit, he calls Base 0 “truly worthless” where I said “completely useless”. Funny.

On dwheeler’s closing remark about base 0 potentially representing all numbers (ie. 0/0), I disagree. A base 0 system has no characters to represent it. It is nothing (which is the same as not nothing, that is – doesn’t exist).

To close this up, enjoy two (10b) videos by They Might Be Giants which do a surprising good job of explaining ZERO and ONE