> > For those still following this thread, and looking for more examples > of the infinite representations of numbers ;-), here is another... > > Instead of a binary fixed point, you can use a binary number with an > implicit decimal fixed point. For example, if your implicit decimal > point were 10^2, the number 345 (stored as a binary integer) would > represent the number 3.45. Concretely in C syntax, you'd print numbers > as printf("%d.%02u", x/100, x%100). Addition and subtraction can be > done with the integer operators. Multiplication and division take some > care to avoid loss of range or precision, but abstractly, multiply is > (x * y) / 100 and divide is (x * 100) / y. This is a neat hack to > maintain fixed decimal accuracy with binary integers. > > > These values can also be stored as arbitrary precision integers, > > which store multiple integers words to represent the value which can > > again be interpreted as a fixed point fraction, or as BCD (binary > > coded decimal) values which store 2 digits per byte. > > Storing numbers as *two* arbitrary precision integers, a numerator and > a denominator, gives you all the exact rationals (at least as big as > your memory allows -- reducing the numbers helps). Common Lisp and Scheme > have rationals as well as real, complex, and arbitrary precision > integer numbers. http://mathworld.wolfram.com/RationalNumber.html
There was also a proposed numbering system where the radix was variable and was given by prime numbers. Pretty wild stuff but I've never seen an implementation.