function convert10(c:string;a:integer):real;
var
k,i,j:integer;
cc1:longint;
cc2:real;
ch:char;
c1,c2:string;
m:integer;
begin
k:=length(c);
m:=pos('.',c);
if m=0 then begin c1:=c; c2:=''; m:=k+1; end
else begin c1:=copy(c,1,m-1); c2:=copy(c,m+1,k-m); end;
cc1:=0; cc2:=0;
if c1<>'' then
for i:=1 to m-1 do begin
ch:=c1[i];
case ch of
'A'..'F':j:=ord(ch)-ord('A')+10;
'a'..'f':j:=ord(ch)-ord('a')+10;
'0'..'9':j:=ord(ch)-ord('0');
end;
cc1:=cc1*a+j;
end;
if c2<>'' then
for i:=k-m downto 1 do begin
ch:=c2[i];
case ch of
'A'..'F':j:=ord(ch)-ord('A')+10;
'a'..'f':j:=ord(ch)-ord('a')+10;
'0'..'9':j:=ord(ch)-ord('0');
end;
cc2:=cc2/a+j;
end;
convert10:=cc1+cc2/a;
end;
function convert_b(a:real;b:integer):string;
var
s,s1,s2:string;
m1:longint;
m2,n:real;
i,j:integer;
ch:string[1];
function d2c(i:integer):char;
begin
case i of
0:d2c:='0';
1:d2c:='1';
2:d2c:='2';
3:d2c:='3';
4:d2c:='4';
5:d2c:='5';
6:d2c:='6';
7:d2c:='7';
8:d2c:='8';
9:d2c:='9';
10:d2c:='A';
11:d2c:='B';
12:d2c:='C';
13:d2c:='D';
14:d2c:='E';
15:d2c:='F';
else d2c:='Z';
end;
end;
begin
m1:=trunc(a);
m2:=a-m1;
s1:='';
s2:='';
while m1>0 do begin
i:=m1 div b;
j:=m1 mod b;
{str(j:0,ch);}
ch:=d2c(j);
s1:=ch+s1;
m1:=i;
end;
while (m2>0)and(length(s2)<8) do begin
n:=m2*b;
j:=trunc(n);
{str(j:0,ch);}
ch:=d2c(j);
s2:=s2+ch;
m2:=n-j;
end;
s:=s1+'.'+s2;
convert_b:=s;
end;
var
s:string;
begin
s:='23.25';
writeln(convert_b(convert10(s,10),2));
writeln(convert_b(convert10(s,10),8));
writeln(convert_b(convert10(s,10),16));
end.
十进制到二进制是除2取余,然后将余数倒着写,就是二进制码,然后二进制到八进制是三位一个数,到十六进制是四位一个数,要想十进制到八进制可以直接除以八取余,然后倒着写余数,和二进制方法一样,类似,十进制到十六进制用十进制的数除以16取余,将余数倒着写