On Thu, 8 Sep 2011, Andy Farnell wrote:
Try a [div] [mod] chain
Four digits base 3 would be
Also, to have the counting itself in base 3, chain counters that count 0,1,2,0,1,2,0,1,2,... in which each counter adds a 1 to the counter on the left whenever it goes from 2 to 0.
This makes a sequence like 00 01 02 10 11 12 20 21 22 as Tim wants.
This can be converted back to another number format using the opposite of what Andy showed :
take D3 multiply by 3 add D2 multiply by 3 add D1 multiply by 3 add D0
But the output of this, and the input of Andy's, is not necessarily in base 10. It is actually in the base that [mod], [div], [*] and [+] are in, and in the case of Pd, that's in binary.
libc's printf() function does something very much like what Andy said, to convert its binary ints to decimal ascii. The differences are that it says 10 instead of 3, and it adds 48 to each digit because codes 48 through 57 represent the 10 digits.
| Mathieu Bouchard ---- tél: +1.514.383.3801 ---- Villeray, Montréal, QC