The Hexadecimal Point: A Simple Proposal

I'm sure that most of you are familiar with "geek calculators." They pretty much divide into two types: the ones that do trigonometry and arcane math functions and the ones that do hexadecimal math. I did pretty much all my educational work on the first type, the infamous "scientific calculator." Aside from a little difficulty with Special Relativity, it pretty much gave me good answers and I have no major complaints with it.

Now that I have to deal with hex math all the time, I am puttering around with the other type. They do OK adding, subtracting, and multiplying, but there's a severe problem with division:

There's no hexadecimal point.

I mean, normally you only need to do things like add 1DE and 22 and get 200, or 512 for you people who haven't gotten with the program and grown six extra fingers. But let's say you want to take your New Math to the logical extreme and divide 1 by 3 in hex. Every goddamn calculator in the world will give you 0 for that. It's not zero. It's not 1. It's a hexadecimal point, followed by a bunch of hexits. Specifically, it's 0x.55555555 and so on. I personally find no need for more than eight hexadecimal places in my work.

When you have to, as I sometimes do, figure out 1.05 (decimal) in hex, you have to do all this multiply-by-16, subtract 16, multiply-by-16, multiply-by-16-again, now you have 1.0C, subtract 12 (decimal), multiply by 16. When Tom Lehrer wrote "New Math" this is the kind of thing he was talking about.

Now, it may look very impressive to put on a resume, "Does long division in hex, correctly" but I feel like that's why we have calculators, computers, and all these clever chunks of silicon. So I don't have to waste my time doing things like that and can instead work on the IMPORTANT parts of the machine language I'm looking at. Like whether that
A2004094 E0008008 is really next to that
A2004084 EF008004 .

These are the kind of things you spend a lot of time thinking about when you are working with a machine that thinks in two kinds of numbers: 1/8 and 1/64 micron. Or 0x.2 and 0x.04 if I have anything to say about it.

C'mon, Hewlett-Packard. Is a hexadecimal point too much to ask? Am I the only one who's ever divided 0x32 by 0x14 and gotten 0x2.8?

UPDATE: OpenVMS 7.1 comes with a really, really cool calculator. So cool that when you do hex math, you get a hex point and two hexits! Now everybody give up your weak operating systems and start running Alphas with OpenVMS. You'll be happier.

Back to geek stuff.


Dedicated to Tom Lehrer, who first taught me how to do this.