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
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?
A2004094 E0008008 is really next to that
A2004084 EF008004 .