Jump to content

Base 26

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 83.146.14.60 (talk) at 09:34, 2 May 2009 (replace non encyclopedic java "tutorial"). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A hexavigesimal numeral system has a base of twenty-six.

Base-26 may be represented by using conventional numerals for the digits 0 to 9, and then the letters A to P for the tenth to twenty-fifth digits. "10" would represent 26, "11" = 27, "AB" = 271 and "NP" = 623.

Alternatively, base-26 may be represented using only letters of the Latin alphabet. As there are 26 letters in English, base-26 is also the highest base in which this is possible and hence utilizes every letter. 0 is represented by A, 1 = B, 2 = C ... 24 = Y, 25 = Z. Some examples: 26 = BA, 678 = BAC.

These systems are of limited practical value, although letters used in nominal or serial numbers can be thought as hexavigesimal numerals for calculation purposes if the entire alphabet is used.

Fractions

The fact that 26 is a composite number and lies between two composite numbers (25 and 27) leads to many simple fractions.

B/C = A.N
B/D = A.IRIRIRIR...
B/E = A.GN
B/F = A.FFFFFFF...

The fractions B/G, B/I, B/J, B/K, B/M, B/N, B/P, B/Q are also simple.

Conversion algorithm (alphabet-only system)

Any number may be converted to base-26 by repeatedly dividing the number by 26. The remainders of each division will be the base-26 digits from right to left (least-significant to most-significant place). For example, to convert 678 to "BAC", the first division yields 26 remainder 2, so 2 (C) is the last digit. The quotient 26 is divided again, yielding 1 remainder 0, so 0 (A) is the second-last digit. The next quotient 1 is then divided to give 0 remainder 1, so the final digit is 1 (B). This is extensible to fractions.

This algorithm may be represented in Java to convert an integer to an ASCII character string as follows. Since Java cannot perform a division that gives the quotient and remainder in one operation, the remainder is first obtained by a modulo operation (% operator). This is followed by an integer division (/ operator) which gives the quotient but discards the remainder. 65 is added to each digit before output because 65 is the ASCII code for the letter "A".

public static String toBase26(int i){
  String s = "";
  while(i > 25){
    int r = i % 26;
    i = i / 26;
    s = (char)(r + 65) + s;
  }
  s = (char)(i + 65) + s;
  return s;
}

The reverse conversion is achieved by processing each base-26 digit from left to right. The value of the first (leftmost) digit is multiplied by 26 and then added to the subsequent digit. If digits remain, then the cumulative sum is multiplied by 26 before adding the next digit, and so on. Note that this works for any base as long as one has the tools to perform mutliplication by 26 and addition in that base. For example, to convert "BAC" to 678, B (1) is multiplied to give 26 and added to A (0) to yield 26. This is multipled to give 676 and added to C (2) to yield 678.