# Bijective numeration

Bijective numeration is any numeral system in which every non-negative integer can be represented in exactly one way using a finite string of digits. The name derives from this bijection (one-to-one correspondence) between the set of non-negative integers and the set of finite strings using a finite set of symbols (the "digits").

A bijective base-k numeration is a bijective positional notation. It uses a string of digits from the set {1, 2, ..., k} (where k ≥ 1) to encode each positive integer; a digit's position in the string defines its value as a multiple of a power of k. Bijective base-k numeration is also called k-adic notation, not to be confused with the p-adic number system.

Most ordinary numeral systems, such as the common decimal system, are not bijective because more than one string of digits can represent the same positive integer. In particular, adding leading zeroes does not change the value represented, so "1", "01" and "001" all represent the number one. Even though only the first is usual, the fact that the others are possible means that decimal is not bijective. However, unary, with only one digit, is bijective.

## Definition

The k-adic numeration system uses the digit-set {1, 2, ..., k} (k ≥ 1) to uniquely represent every non-negative integer, as follows:

• The integer zero is represented by the empty string.
• The integer represented by the nonempty digit-string
anan−1 ... a1a0
is
an kn + an−1 kn−1 + ... + a1 k1 + a0 k0.
• The digit-string representing the integer m > 0 is
anan−1 ... a1a0
where
\begin{align} a_0 & = & m - q_0 k , & & q_0 & = & f\left(\frac m k \right) & \\ a_1 & = & q_0 - q_1 k , & & q_1 & = & f\left(\frac {q_0} k \right) & \\ a_2 & = & q_1 - q_2 k , & & q_2 & = & f\left(\frac {q_1} k \right) & \\ & \vdots & & & & \vdots & & \\ a_n & = & q_{n-1} - 0 k , & & q_n & = & f\left(\frac {q_{n-1}} k \right) & = 0 \end{align}
and
$f(x) = \lceil x \rceil - 1$,
$\lceil x \rceil$ being the least integer not less than x (the ceiling function).

## Properties of bijective base-k numerals

For a given k ≥ 1,

• there are exactly kn k-adic numerals of length n ≥ 0;
• a list of k-adic numerals, in natural order of the integers represented, is automatically in shortlex order (shortest first, lexicographical within each length). Thus, using ε to denote the empty string, the 1-, 2-, 3-, and 10-adic numerals are as follows (where the ordinary binary and decimal representations are listed for comparison):
 1-adic: 2-adic: binary: 3-adic: 10-adic: decimal: ε 1 11 111 1111 11111 ... (unary numeral system) ε 1 2 11 12 21 22 111 112 121 122 211 212 221 222 1111 1112 ... 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 ... ε 1 2 3 11 12 13 21 22 23 31 32 33 111 112 113 121 ... ε 1 2 3 4 5 6 7 8 9 A 11 12 13 14 15 16 ... 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

## Examples

(34152)five-adic = 3×54 + 4×53 + 1×52 + 5×51 + 2×50 = (2427)decimal.
(119A)ten-adic = 1×103 + 1×102 + 9×101 + 10×100 = (1200)decimal.

In the last example, the digit "A" represents the integer ten. For 10 ≤ k ≤ 35, it is common to use successive letters of a common alphabet for the digits after 9; e.g., bijective hexadecimal would use the sixteen digits {1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G}.

## The bijective base-10 system

The bijective base-10 system is also known as decimal without a zero. It is a base ten positional numeral system that does not use a digit to represent zero. It instead has a digit to represent ten, such as A.

As with conventional decimal, each digit position represents a power of ten, so for example 123 is "one hundred, plus two tens, plus three units." All positive integers which are represented solely with non-zero digits in conventional decimal (such as 123) have the same representation in decimal without a zero. Those that use a zero must be rewritten, so for example 10 becomes A, conventional 20 becomes 1A, conventional 100 becomes 9A, conventional 101 becomes A1, conventional 302 becomes 2A2, conventional 1000 becomes 99A, conventional 1110 becomes AAA, conventional 2010 becomes 19AA, and so on.

Addition and multiplication in decimal without a zero are essentially the same as with conventional decimal, except that carries occur when a position exceeds ten, rather than when it exceeds nine. So to calculate 643 + 759, there are twelve units (write 2 at the right and carry 1 to the tens), ten tens (write A with no need to carry to the hundreds), thirteen hundreds (write 3 and carry 1 to the thousands), and one thousand (write 1), to give the result 13A2 rather than the conventional 1402.

The system of common numerals used in ancient Greece prior to the Hellenistic Age was a bijective base-10 number system in which letters of the Greek alphabet were assigned values between 1 and 900. This was the system used to reckon the year based on the four-year Olympiads, so for instance 480 BCE (the date of the Battle of Thermopylae) would be written ἔτει αʹ Ὀλυμπιάδος οδʹ, that is, the 1st year of the 74th Olympiad. These numbers are still commonly used in Greece for ordinals.

## The bijective base-26 system

The bijective base-26 system is also known as base 26 without a zero. It is a base twenty-six positional numeral system that does not use a digit to represent zero. It uses digits "A" to "Z" to represent one to twenty-six.

The number sequence goes A, B, C, ..., X, Y, Z, AA, AB, AC, ..., AX, AY, AZ, BA, BB, BC, ...

Each digit position represents a power of twenty-six, so for example, ABC is "one 262, plus two 261, plus three 260" since A is worth one, B is worth two, and C is worth three.

In this representation the number WIKIPEDIA is:

23×268 + 9×267 + 11×266 + 9×265 + 16×264 + 5×263 + 4×262 + 9×261 + 1×260 = 4,878,821,185,187

### Systematic naming using the alphabet

Many spreadsheets including Microsoft Excel use the 26-adic counting system with the "digits" A-Z to label the columns of a spreadsheet, starting A, B, C, ..., Z, AA, AB, ..., AZ, BA, ..., ZZ, AAA, etc. The numbering starts at 1 or A, so the empty string is not used. A variant of this system is used to name variable stars, it can be applied to any problem where a systematic naming using letters is desired, while using the shortest possible strings.

## Historical notes

The fact that every non-negative integer has a unique representation in bijective base-k (k ≥ 1), is a "folk theorem" that has been rediscovered many times. Early instances are Foster, J. E. (1947), Smullyan (1961) for the case k = 2, and Böhm (1964) for all k ≥ 1 (the latter using these representations to perform computations in the programming language P′′). Knuth (1969) mentions the special case of k = 10, and Salomaa (1973) discusses the cases k ≥ 2. Forslund (1995) considers that if ancient numeration systems used bijective base-k, they might not be recognized as such in archaeological documents, due to general unfamiliarity with this system. (The latter article is notable in that it does not cite existing literature on this system, but appears to unwittingly reinvent it.)

## References

• Böhm, C., "On a family of Turing machines and the related programming language", ICC Bulletin 3, p. 191, July 1964.
• Foster, J. E., "A Number System Without a Zero Symbol", Mathematics Magazine, Vol.21, No.1 pp. 39-41, 1947.
• Knuth, D. E., The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, 1st ed., Addison-Wesley, 1969. (Solution to Exercise 4.1-24, p. 495., discusses bijective base-10.)
• Salomaa, A., Formal Languages, Academic Press, 1973. (Note 9.1, pp. 90-91, discusses bijective base-k for all k ≥ 2.)
• Smullyan, R., "Theory of Formal Systems", Annals of Mathematics Studies, Number 47, Princeton, 1961.