This bit from HBO’s Silicon Valley cracked me up:
Some kid is pitching his revolutionary startup idea to entrepreneur Elrich Bachman:
Kid: Here it is: Bit… soup. It’s like alphabet soup, BUT… it’s ones and zeros instead of letters.
Bachman: {silence}
Kid: ‘Cause it’s binary? You know, binary’s just ones and zeroes.
Bachman: Yeah, I know what binary is. Jesus Christ, I memorized the hexadecimal times tables when I was fourteen writing machine code. Okay? Ask me what nine times F is. It’s fleventy-five. I don’t need you to tell me what binary is.
We infer that “fleventy-five” is a hexadecimal number, commonly used in coding; presumably it’s 0xF5 (which is not 0x9 times 0xF, as it happens). But instead of saying “eff-five” for the byte 0xF5, Bachman has come up with some kind of novel system for the English-ification of hex digits.
He’s on to something. We have ordinary English words for decimal numbers, with names based on the digits and their place-value. “Seventy” is the word for two-digit chunks starting with the digit seven, for example. It might appear in the number “seventy-three”, or “five hundred seventy-one thousand”; both numbers with a 7 digit in an appropriate place. “Fleventy”, then, would be the number for two-digit chunks starting with F.
Hex only adds more kinds of digits (the symbols A through F). Could we follow Bachman’s lead and add more number-names for the extra digit symbols, and pronounce hex just like a decimal number? Could we have a system that attains the unwieldiness and syllable count of spoken English numbers, with all the respectable seriousness of saying the word “fleventy”?
I’m glad you asked. This has never been done before(1)probably, but fear not; here are the official new number-words for hexadecimal. You may start using them immediately:
Hex Place value | Word |
---|---|
0xA0 | “Atta” |
0xB0 | “Bibbity” |
0xC0 | “City” |
0xD0 | “Dickety” |
0xE0 | “Ebbity” |
0xF0 | “Fleventy” |
I think it would help to solidify this with some examples:
0xB3 “bibbity-three”
0xF5 “fleventy-five”
0xE4 “ebbity-four”
0xA7 “atta-seven”
0xC5 “city-five”
0xDB “dickety-bee”
Higher place values
But really, we must go further. What about numbers larger than a byte? We have the words “hundred” and “thousand” for decimal place values higher than ten, so why not something for hex place values higher than 0x10? Say, for multiples of 0x100?
For this, I propose “bitey”.
Resulting in:
0xDAF1 “dickety-A bitey fleventy-one”
0xE137 “ebbity-one bitey thirty-seven”
0xA0C9 “atta-bitey city-nine”
0xBBBB “bibbity-bee bitey bibbity-bee”
Naturally, we could make yet larger numbers by devising some names for larger place values, and combine them with intermediate values, in the same way that we compose decimal numbers like “thirty thousand” or “six hundred fifty one million”. As in English, place value names could be dropped if you’re feeling brief. We’ll also need hex-digit words for the “teens”.
Try it
I’ll leave you to explore the new naming system with this toy:
How we’ve conversed about hex without a system like this is beyond me. You’re welcome.
Footnotes
1. | ↑ | probably |
Nice! I’d like to suggest modeling the higher-order digits on Knuth’s yllions: instead of inventing a prefix every other hex digit, we’ll only have to invent a prefix for 2 digits, 4, 8, 16, etc.
So if 0x10000 is pronounced “giggly”, 0xDEADBEEF is “Dickety-ee bitey atta-dee giggly bibbity-ee bitey ebbity-eff.”
If 0x100000000 is pronounced “hobbity”, 0xFACEB00BDEFEC8ED is “Fleventy-ay bitey city-ee giggly bibbity bitey bee hobbity dickety-ee bitey fleventy-ee giggly city-eight bitey ebbity-dee.”
Indeed, try your examples with the widget at the bottom. :)
I do quite like “hobbity” and “giggly” as halfword and fullword names…
Sounds like the lyrics from a Disney movie.
Fleventy-ay, dickety-ee, bippity boppity boo.
Put em together and what have you got? Hexadecimal for you.
So Cool.
Lets improve the hexadecimal pronunciation completely over the decimal system: starting with most significant digits we are required to start counting before we can start the pronunciation. So why not switching that around, and start with the least significant digits.
That way we can build up as we start pronunciation, without the need of pre-parsing the text. It is less memory intensive, requires less CPU.
“Atta” is “eight” in Swedish. That’s confusing.
Also, low numbers are generally few syllables. “Bibbity,” “Dickity” and “Ebbity” aren’t as charming as “Fleventy.” Maybe something quicker to pronounce?
“Åtta” is “eight” in Swedish, and it doesn’t sound at all like “Atta.”
Depends on the region. My Åtta does sound like a Stockholmer’s Atta.
It’s clear enough within each region but when they meet it’s sometimes confusing.
I’ve been doing this for a while but I ended up using a very simple system:
A = Ah-ty
B = Bee-ty
C = Cee-ty
D = Dee-ty
E = Eee-ty
F = Eff-ty
The hundreds, thousands and the like remain the same; they have different meanings though. Hundred is 0x100 and thousand is 0x1000.
0xBEEF would be B thousand, E hundred and Eee-ty Eff. 0xDEADBEEF would be Dee-ty E million, A hundred and Dee-ty B thousand, E hundred and Eee-ty F.
No, no, no! 0x1000 is NOT thousand!
This post reminded me that I created a pronunciation guide for base 256 that uses a single syllable per byte.
http://hewo.xedoloh.com/2015/04/base-256/
It uses 16 starting consonants, 4 vowels and 4 ending consonants and produces values like “bac” (0) and “zom” (255).
Here’s my hexahaiku:
seventy-seven
fifty-five bibbity-two
twenty-two-oh-two
or:
x77
x55 xB2
x2202
or, written using HTML’s “&#x” functionality
w
U ²
∂
Which means:
w U ² ∂
Or, “double u [is] u squared’s partial differential”
Which makes it an English pronouncible hex, haiku, unicode, math formula
Where were you guys four years ago? ;)
http://stackoverflow.com/questions/4701470/how-do-you-pronounce-large-hex-numbers
Able to write cheques with hexadecimals now
I like this. But (e.g.) 0x70 is not the same as 70 and shouldn’t have the same name.
You might have more luck with something like:
0=zero, 1=one, 2=two, 3=three, 4=four, 5=five, 6=six, 7=seven, 8=eight, 9=nine, A=ay, B=bee, C=see, D=dee, E=ee, F=eff
and then
10=sen, 20=twensen, 30=thirsen, 40=forsen, 50=fifsen, 60=sixsen, 70=sevensen, 80=eightsen, 90=ninesen, A0=aysen, B0=beesen, C0=seesen, D0=deesen, E0=eesen, F0=effsen
and perhaps:
100=bytred
10000=wordion
We have a lot to do: we have to find names for hexadecimal numbers $10..$90, because $21 is not twenty-one (actually it’s thirty-three).
0xBB0000000000000000
“bibbity-bee undefined bitey halfy bitey worddion bitey halfy bitey”
Brilliant.
I don’t see it noted, however, that 9 times F isn’t fleventy-five. I get 87. (And that leaves open the question of whether we should read 87 as eighty-seven since those aren’t tens we have 8 of.
Anyway, I have thought about language and place value quite a bit in the context of working with future elementary teachers. Tons of fun. You may be amused by an article I published on the matter.
I just spent a few minutes (well, quite a few) coming up with a draft for yet another alternative system. Not definitive. Modification by others welcome.
1 = one *10= teeny *100= wunred *1000= wuntou
2 = two *10= twenty *100= toored *1000= tootou
3 = three *10= thirty *100= thirtred *1000= thirtou
4 = four *10= fourty *100= fourtred *1000= fourtou
5 = five *10= fifty *100= fifred *1000= fiftou
6 = six *10= sixty *100= sixred *1000= sixtou
7 = seven *10= seventy *100= sevenred *1000= seventou
8 = eight *10= eight *100= eightred *1000= eightou
9 = nine *10= ninety *100= ninered *1000= ninetou
A = ay *10= assity *100= assred *1000= asstou
B = bee *10= betty *100= betred *1000= bettou
C = cee *10= cetty *100= cetred *1000= cettou
D = dee *10= detty *100= detred *1000= dettou
E = ee *10= exity *100= exred *1000= extou
F = eff *10= effity *100= effred *1000= efftou
Hence,
dettou assred exity one
extou wunred thirty seven
asstou cetty nine
bettou betred betty bee
Edit previous comment: I mean, of course, forty, fortred, fortou. Was obviously staring at the words for too long.
Oh, and also:
dettou assred effity one … not exity … wrong number, aargh.
My understanding is that the “ty” suffix is a derivation of “tens”, so that would be the first thing you would have to replace. You could not use the word “hex” as that strictly means six, which is why the full name of the system is hexadecimal. “hxd” would be very difficult to pronounce and no gain. “exml” might be manageable, so that 0x74 would be pronounced as sevenexml-four. Compromises would be needed of course as they are in decimal. We do not speak of “threety-five”.
Everything has been invented.
in fact 0xE0 “Ebbity” sounds like fuck-it in Bulgarian and elegantly follows 0xD0 “Dickety” in English :P
0x0A1D = “a bitey dibbleteen”
Excuse me??
Given that “ty” is an abbreviated version of “ten” (ditto “teen”), while at uni, I cane up with an alternative: “nib” (then “byte”, then “Word” etc) and just used the letters as they were. So F5 was “Effnib Five”, A6 was “Ayynib Six”, 1E was “Onenib Ee” and 42 was “Fournib Two”. Similarly 1F6 was “One byte Effnib Six”, 4502 was “Fournib Five byte two” and DEADBEEF was “Deenib Ee byte Ayynib Dee word Beenib Ee byte Eenib Eff”. This does have the problem that “Sevennib Ee” sounds like “Sevennib Bee” and “Eightnib Dee” sounds like “Ayynib Dee” (and “Dee word” sounds a little like “Dword”), but nevertheless it helped me when I was working with hexadecimal numbers.
It also occurred to me that Bachman should have said, “I memorized the hexadecimal times tables when I was E.”
To really make the hex number-name thing complete, we need new replacements for the groupings below Atta, too. If you say “Twenty”, it isn’t clear if you are speaking Decimal or Hex. So it should be Twentex, or Twiddy, or Doublety. And the teens also need to be renamed (Decimal Sixteen and Seventeen are written “10” and “11” in hex. Don’t call them “Ten” and “Eleven”. Call them “Oneitty” and “Oneitty-one”. Or maybe “Singlety-one” and “Singlety-two”.
So after F, counting by sixteens:
Singlety, Doublety, Triplety, Quadry, Penty, Hexty, Septy, Octy, Nony, Atta, Bibbity, City, Dickety, Ebbity, Fleventy.
That way you can say any number an not have the listener be unsure about whether you are speaking in hex or decimal.
The earlier comment attributed to Mike Davis (who is not fluent in hexadecimalese) was pasted from an email to Davis from Steve Cauffman. The brilliance of singlety-two is all Steve; Mike just wanted to share it with Bzarg.
A one Mr. Glen Quagmire cums to mind while reading, Giggity Giggity Goo!!!
Why not just use the NATO phonetic alphabet? https://en.wikipedia.org/wiki/NATO_phonetic_alphabet
A – Alpha
B – Bravo
C – Charlie
D – Delta
E – Echo
F – Foxtrot
0xB3 “bravo-three”
0xF5 “foxtrot-five”
0xE4 “echo-four”
0xA7 “alpha-seven”
0xC5 “charlie-five”
0xDB “delta-bee”
THIS!
… is how me and my coworkers have been reading hex strings out loud for years.
Although 0xDB would be “delta-bravo”, not “delta-bee”.
For between 0x19 and 0x20 (the teens)
Atteen
Biteen
Citteen
Dicteen
Ebbteen
FleTeen
Thank you for sharing such valuable info.
The article is very well-written. I did chuckle when I read the footnote that read “Probably”. What you have done is to make a pronunciation system for base 16 that is analogous to that which we use for base 10. I like that you gave plenty of examples.