|Hindu–Arabic numeral system|
|Positional systems by base|
|Non-standard positional numeral systems|
|List of numeral systems|
Mixed radix numeral systems are non-standard positional numeral systems in which the numerical base varies from position to position. Such numerical representation applies when a quantity is expressed using a sequence of units that are each a multiple of the next smaller one, but not by the same factor. Such units are common for instance in measuring time; a time of 32 weeks, 5 days, 7 hours, 45 minutes, 15 seconds, and 500 milliseconds might be expressed as a number of minutes in mixed-radix notation as:
... 32, 5, 7, 45; 15, 500 ... ∞, 7, 24, 60; 60, 1000
In the tabular format, the digits are written above their base, and a semicolon indicates the radix point. In numeral format, each digit has its associated base attached as a subscript, and the radix point is marked by a full stop or period. The base for each digit is the number of corresponding units that make up the next larger unit. As a consequence there is no base (written as ∞) for the first (most significant) digit, since here the "next larger unit" does not exist (and note that one could not add a larger unit of "month" or "year" to the sequence of units, as they are not integer multiples of "week").
The most familiar example of mixed radix systems is in timekeeping and calendars. Western time radices include decimal centuries, decades and years as well as duodecimal months, trigesimal (and untrigesimal) days, overlapped with base 52 weeks and septenary days. One variant uses tridecimal months, quaternary weeks, and septenary days. Time is further divided by quadrivigesimal hours, sexagesimal minutes and seconds, then decimal fractions thereof.
A mixed radix numeral system can often benefit from a tabular summary. The system for describing the 604800 seconds of a week starting from midnight on Sunday runs as follows:
|Place value (seconds):||86400||43200||3600||60||1|
|Digit translations …|
|day:||0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday|
|hour:||0 is written as "12"|
In this numeral system, the mixed radix numeral 371251251605760 seconds would be interpreted as 5:51:57 p.m. on Wednesday, and 070201202602460 would be 12:02:24 a.m. on Sunday. Ad hoc notations for mixed radix numeral systems are commonplace.
The Maya calendar consists of several overlapping cycles of different radices. A short count tzolk'in overlaps vigesimal named days with tridecimal numbered days. A haab' consists of vigesimal days, octodecimal months, and base-52 years forming a round. In addition, a long count of vigesimal days, octodecimal winal, then vigesimal tun, k'atun, b'ak'tun, etc. tracks historical dates.
A second example of a mixed radix numeral system in current use is in the design and use of currency, where a limited set of denominations are printed or minted with the objective of being able to represent any monetary quantity; the amount of money is then represented by the number of coins or banknotes of each denomination. When deciding which denominations to create (and hence which radices to mix), a compromise is aimed for between a minimal number of different denominations, and a minimal number of individual pieces of coinage required to represent typical quantities. So, for example, in the UK, banknotes are printed for £50, £20, £10 and £5, and coins are minted for £2, £1, 50p, 20p, 10p, 5p, 2p and 1p—these follow the 1-2-5 series of preferred values.
Mixed-radix representation is also relevant to mixed-radix versions of the Cooley-Tukey FFT algorithm, in which the indices of the input values are expanded in a mixed-radix representation, the indices of the output values are expanded in a corresponding mixed-radix representation with the order of the bases and digits reversed, and each subtransform can be regarded as a Fourier transform in one digit for all values of the remaining digits.
Mixed-radix numbers of the same base can be manipulated using a generalization of manual arithmetic algorithms. Conversion of values from one mixed base to another is easily accomplished by first converting the place values of the one system into the other, and then applying the digits from the one system against these.
Factorial number system
Another proposal is the so-called factorial number system:
|Place value in decimal||5040||720||120||24||6||2||1||1|
|Highest digit allowed||7||6||5||4||3||2||1||0|
For example, the biggest number that could be represented with six digits would be 543210 which equals 719 in decimal: 5×5! + 4×4! + 3×3! + 2×2! + 1×1! It might not be clear at first sight but the factorial based numbering system is unambiguous and complete. Every number can be represented in one and only one way because the sum of respective factorials multiplied by the index is always the next factorial minus one:
There is a natural mapping between the integers 0, ..., n! − 1 and permutations of n elements in lexicographic order, which uses the factorial representation of the integer, followed by an interpretation as a Lehmer code.
The above equation is a particular case of the following general rule for any radix (either standard or mixed) base representation which expresses the fact that any radix (either standard or mixed) base representation is unambiguous and complete. Every number can be represented in one and only one way because the sum of respective weights multiplied by the index is always the next weight minus one:
- , where ,
which can be easily proved with mathematical induction.
Primorial number system
Another proposal is the number system with successive prime numbers as radix, whose place values are primorial numbers:
|Place value in decimal:||30030||2310||210||30||6||2||1|
- where , and pj = jth prime, p0# = p0 = 1.
- Donald Knuth. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1997. ISBN 0-201-89684-2. Pages 65–66, 208–209, and 290.
- Georg Cantor. Über einfache Zahlensysteme, Zeitschrift für Math. und Physik 14(1869), 121–128.
- Mixed Radix Calculator — Mixed Radix Calculator in C#