Перевести целые числа из системы шестнадцатеричной счисления в двоичную - Turbo Pascal
Формулировка задачи:
Здравствуйте! помогите пожалуйста написать программу, переводящую целые числа из системы шестнадцатеричной счисления в двоичную... Если можно, с пошаговым описанием действий
Решение задачи: «Перевести целые числа из системы шестнадцатеричной счисления в двоичную»
textual
Листинг программы
uses crt;
{тетрады для перевода 2 в 16, каждая соответствует цифрам от 0 до F}
const tetr:array[0..15] of string[4]=('0000','0001','0010','0011',
'0100','0101','0110','0111',
'1000','1001','1010','1011',
'1100','1101','1110','1111');
digit='0123456789ABCDEF';{цифры в СС 16}
var s2,s16:string;
i:integer;
c:char;
begin
clrscr;
writeln('Введите число в СС 16, окончание ввода Enter:');
s16:='';
repeat
c:=readkey;
if c in ['0'..'9','A'..'F'] then
begin
write(c);
s16:=s16+c
end;
if c=#13 then writeln {Ebter-на новую строку и выход}
until c=#13;
s2:='';
for i:=1 to length(s16) do
s2:=s2+tetr[pos(s16[i],digit)-1];{приписываем к строке тетрады соответствующие цифрам}
while s2[1]='0' do delete(s2,1,1); {удаляем ведущие ноли}
write('В СС 2=',s2);
readln
end.
Объяснение кода листинга программы
- Создается переменная
s16, которая будет хранить введенное число в шестнадцатеричной системе счисления. - Создается переменная
s2, которая будет хранить переведенное число в двоичной системе счисления. - В цикле читается символ из ввода пользователя, пока не будет введен символ-терминатор
#13. - Если введенный символ находится в диапазоне от
0до9или отAдоF, то он добавляется к переменнойs16. - После ввода всех символов, переменная
s16преобразуется в строку с помощью функцииreadkey. - Для каждого символа в строке
s16создается соответствующий ему тетрадный код и добавляется к переменнойs2. - Если введенный символ является символом-терминатором
#13, то цикл прерывается. - В конце программы выводится переведенное число в двоичной системе счисления.