Вы не могли бы помочь написать программу перевода из 16-й в 2-ую систему счисления. (с функцией.)
Вы не могли бы помочь написать программу перевода из 16-й в 2-ую систему счисления. (с функцией.)
Ответ(ы) на вопрос:
function f16t2(s16:string):string;
const
m:array['0'..'F'] of string=
('0000','0001','0010','0011','0100','0101','0110','0111',
'1000','1001','','','','','','','','1010','1011','1100',
'1101','1110','1111');
m1:array['0'..'F'] of string=
('0','1','10','11','100','101','110','111','1000','1001','',
'','','','','','','1010','1011','1100','1101','1110','1111');
var
s:string;
i:integer;
begin
s16:=UpperCase(s16);
s:=m1[s16[1]]+'''';
for i:=2 to Length(s16) do s:=s+m[s16[i]]+'''';
f16t2:=Copy(s,1,Length(s)-1)
end;
var
s:string;
begin
Write('Введите шестнадцатиричное число: '); Readln(s);
Writeln('В двоичной системе: ',f16t2(s))
end.
Тестовое решение:
Введите шестнадцатиричное число: 5AC8e2
В двоичной системе: 101'1010'1100'1000'1110'0010
Если разбивка вывода по тетрадам не нужна, можно чуть упростить:
function f16t2(s16:string):string;
const
m:array['0'..'F'] of string=
('0000','0001','0010','0011','0100','0101','0110','0111',
'1000','1001','','','','','','','','1010','1011','1100',
'1101','1110','1111');
m1:array['0'..'F'] of string=
('0','1','10','11','100','101','110','111','1000','1001','',
'','','','','','','1010','1011','1100','1101','1110','1111');
var
s:string;
i:integer;
begin
s16:=UpperCase(s16);
s:=m1[s16[1]];
for i:=2 to Length(s16) do s:=s+m[s16[i]];
f16t2:=s
end;
var
s:string;
begin
Write('Введите шестнадцатиричное число: '); Readln(s);
Writeln('В двоичной системе: ',f16t2(s))
end.
Тестовое решение:
Введите шестнадцатиричное число: 5AC8e2
В двоичной системе: 10110101100100011100010
Не нашли ответ?
Похожие вопросы