A
post on
Slashdot asked the
question, how does one transliterate numbers of arbitrary bases?
For example the number
"
562" is transliterated as "five hundred sixty two"
but how would one transliterate the hex number
"
0xDEADBEEF"?
The text below attempts to answer that question using two methods.
The first is a rigorous and technically accurate method but is difficult
to use.
The second is technically less rigorous but is simple to use.
Introduction to American and European Numeric Transliteration
Methods of transliterating numbers from their written form to
thier spoken form employ two distinct structures.
The first is several unique power-of-ten suffixes appended to
individual root-word digits and the second is an incremental multiplier added
to groups of numbers in powers of 10
3.
The unique power-of-ten suffixes are as follows.
100 |
- |
seven |
No ending |
101 |
-ty |
seventy |
10-12, 20, and 30 are irregular |
102 |
-hundred |
seven hundred |
|
The incremental modifiers represent powers of 10
3
or in the case of European incremental modifiers,
powers of 10
6 in conjunction with "thousand."
100 |
- |
- |
103 |
thousand |
thousand |
106 |
million |
million |
109 |
billion |
thousand million |
1012 |
trillion |
billion |
1015 |
quadrillion |
thousand billion |
1018 |
quintillion |
trillion |
Note that the values represented by American incremental modifiers
are derived by taking the numeric prefix of the transliteration, adding one,
multiplying the result by three, then taking ten to that power.
Thus one
trillion is
10
(3+1)3 or 10
12.
The European convention uses latin prefixes to denote powers of
a million. Thus in Europe one
billion
is (10
6)
2
or 10
12,
which is equal to a trillion using American conventions.
In summary, the American system employs three suffixes for the ones,
tens, and hundreds place with a unique incremental modifier
used for multiples of 10
3.
The European system also uses three suffixes for the ones, tens, and
hundreds place but places a unique incremental modifier only at multiples
of 10
6.
Because only three suffixes are employed in the European transliteration
scheme (instead of six to span 10
6) the first three suffixes
are reused by collectively multiplying groups by the
modifier "
thousand."
This allows the three unique suffixes to span the required range
of 10
6.
Using the American methodology, the number
"
785,391,247,462" is
transliterated as follows.
785,391,247,462
7*1011 + 8*1010 + 5*109 +
3*108 + 9*107 + 1*106 +
2*105 + 4*104 + 7*103 +
4*102 + 6*101 + 2*100
(7*102 + 8*101 + 5*100)*109+
(3*102 + 9*101 + 1*100)*106+
(2*102 + 4*101 + 7*100)*103+
(4*102 + 6*101 + 2*100)*100
(7-hundred + 8-ty + 5) billion +
(3-hundred + 9-ty + 1) million +
(2-hundred + 4-ty + 7) thousand +
(4-hundred + 6-ty + 2)
seven hundred eighty five billion,
three hundred ninety one million,
two hundred forty seven thousand,
four hundred sixty two
Using the European methodology, the number is transliterated as follows.
785,391,247,462
7*1011 + 8*1010 + 5*109 +
3*108 + 9*107 + 1*106 +
2*105 + 4*104 + 7*103 +
4*102 + 6*101 + 2*100
((7*102 + 8*101 + 5*100)*103 +
3*102 + 9*101 + 1*100)*106 +
((2*102 + 4*101 + 7*100)*103 +
4*102 + 6*101 + 2*100)*100
((7-hundred + 8-ty + 5) thousand + 3-hundred + 9-ty + 1) million +
((2-hundred + 4-ty + 7) thousand + 4-hundred + 6-ty + 2)
seven hundred eighty five thousand three hundred ninety one million,
two hundred forty seven thousand four hundred sixty two
What's interesting to note, is that the value of the incremental modifier
is arbitrary.
Americans use 10
3, Europeans use 10
6,
and Japanese use 10
4 (more on that to follow).
Method I: Technically Accurate but Difficult
Thus to answer the question of how to transliterate numbers of an
arbitrary base, we must simply define the standard suffixes,
define a method for constructing incremental modifiers,
and settle on a size of the multiplier.
I suggest the selection of B
3 as the value of the
incremental modifier's multiplier, where B represents the
base number.
It will minimize the number of suffixes required,
while avoiding the complication of including an additional multiplier
to span large values (as in the European system).
Given that, only three repeating suffixes and a system of
naming incremental modifiers based on powers of B
3
are required.
For the three repeating suffixes, I suggest a naming scheme based
on genitive Latin ordinal numbers, where that ordinal corresponds
to the power of the base and can be translated as "of the n
th."
B0 |
nulli |
- |
B1 |
primi |
-primi |
B2 |
secundi |
-secundi |
Note that the first suffix is omitted as in English (and other
European languages).
The suffix for B
1 is
"
-primi"
and the suffix for B
2 is
"
-secundi."
As an example, the number "
145," transliterated,
using base-ten-specific naming conventions as
"
one hundred fourty five,"
would be transliterated using the base-generic method as
"
one secundi fourprimi five."
(Awkward? Stay tuned. I'm just getting started.)
As stated above, the incremental modifier has been selected to be
a multiple of B
3.
To represent that value, the root word "
trigarium,"
meaning "team of three horses" in Latin, has been selected.
Additional incremental modifiers are simply constructed by adding
Latin numerical prefixes.
B3 |
trigarium |
trig |
B6 |
bitrigarium |
bitrig |
B9 |
tritrigarium |
tritrig |
B12 |
quadtrigarium |
quadtrig |
B15 |
quinttrigarium |
quinttrig |
B18 |
sextrigarium |
sextrig |
B21 |
septtrigarium |
septtrig |
Using this system, the hex number
"
0xDEADBEEF"
transliterates as follows.
DEADBEEF
0*168 + D*167 + E*166 +
A*165 + D*164 + B*163 +
E*162 + E*161 + F*160
(0*162 + D*161 + E*160)x166 +
(A*162 + D*161 + B*160)x163 +
(E*162 + E*161 + F*160)x160
(D-primi + E) bitrig +
(A-secundi + D-primi + B) trig +
E-secundi + E-primi + F)
D-primi E bi-trig,
A-secundi D-primi B trig,
E-secundi E-primi F
It's absolutely gibberish-tastic!
Method II: Technically Inaccurate but Easy to Use
The second method simply steals all endings from the existing
base-ten transliteration method.
Provided that the base is made clear, there's no chance of
error. I mean, how many of us really use MiB instead of MB?
Using this simpler system, the hex number
"
0xDEADBEEF"
transliterates as follows.
DEADBEEF
0*168 + D*167 + E*166 +
A*165 + D*164 + B*163 +
E*162 + E*161 + F*160
(0*162 + D*161 + E*160)x166 +
(A*162 + D*161 + B*160)x163 +
(E*162 + E*161 + F*160)x160
(D-ty + E) million +
(A-hundred + D-ty + B) thousand +
E-hundred + E-ty + F)
D-ty E million,
A-hundred D-ty B thousand,
E-hundred E-ty F
And that's all I have to say about that.