HP Prime and TI-84 Plus CE: Base 10 (Decimal)-Base 12
(Duodecimal/Dozenal) Conversions
Conventions:
X = 10
E = 11
(notation by
William A. Dwiggins)
HP Prime Program DEC2DUO
Enter the
integer as a number.
EXPORT DEC2DUO(n)
BEGIN
// integer
// EWS 2017-01-30
// base 10 to base 12
LOCAL s,d,k,q,str1;
s:=IP(LN(n)/LN(12))+1;
d:=n;
str1:=":";
FOR k FROM 1 TO s DO
q:=IP(d/12^(s-k));
IF q<10 THEN
str1:=str1+STRING(q);
END;
IF q==10 THEN
str1:=str1+"X";
END;
IF q==11 THEN
str1:=str1+"E";
END;
d:=d-q*12^(s-k);
END;
RETURN MID(str1,2,s+1);
END;
Example: Convert 12501
from Base 10 to Base 12
DEC2DUO(12501) returns “7299”
HP Prime DUO2DEC
Enter the integer as a string, use X for 10 and E for 11
EXPORT DUO2DEC(str1)
BEGIN
// as a string, X=10, E=11
// 2017-01-30 EWS
// base 12 to base 10
LOCAL s,n,k,str2,q;
s:=DIM(str1);
n:=0;
FOR k FROM 1 TO s DO
str2:=MID(str1,k,1);
q:=EXPR(str2);
IF str2=="X" THEN
q:=10;
END;
IF str2=="E" THEN
q:=11;
END;
n:=n+q*12^(s-k);
END;
RETURN n;
END;
Example: Convert X2X3 from base 12 go base 10
DUO2DEC(“X2X3”)
returns 17691
Note that the
latest version (as of 1/30/2017) of the TI-84 Plus CE operating system is used.
TI-84 Plus CE Program DEC2DUO
Input "DEC:
",N
iPart(ln(N)/ln(12))+1→S
DelVar Str1
":"→Str1
N→D
For(K,1,S)
int(D/12^(S-K))→Q
If Q<10
Str1+eval(Q)→Str1
If Q=10
Str1+"X"→Str1
If Q=11
Str1+"E"→Str1
D-Q*12^(S-K)→D
End
sub(Str1,2,length(Str1)-1)→Str1
Disp
">DUO"
Pause Str1
Example: 5825 in base 10, result is 3455 in base 12
TI-84 Plus CE Program DUO2DEC
Disp "X=10,
E=11"
Disp "DON'T
INCLUDE QUOTES"
Input "DUO:
",Str1
length(Str1)→S
0→N
For(K,1,S)
sub(Str1,K,1)→Str2
expr(Str2)→Q
If
Str2="X":10→Q
If
Str2="E":11→Q
N+Q*12^(S-K)→N
End
Disp
">DEC"
Pause N
Example: 3EE1 in base 12, result is 6901 in base 10
This blog is
property of Edward Shore, 2017