Существуют два перевода 1. универсальный, который годится для перевода из любой системы счисления в любую. Число из исходной системы надо перевести в основную, десятичную систему 754_8 = 7*8^2+5*8^1+4*8^0 = 492_10 и затем перевести в целевую систему счисления 492/16=30 остаток от деления 12 - шестнадцатеричная цифра С 30/16=1 остаток от деления 14 - шестнадцатеричная цифра E 1/16=0 остаток от деления 1 - шестнадцатеричная цифра 1 754_8 = 492_10 = 1EC_16 - и второй попроще, основанный на том, что и восьмеричная и двоичная системы - это системы с основанием, равным степени двойки, и перевод из них в двоичную и обратно очень прост Каждая восьмеричная цифра соответствует трём двоичным, каждая шестнадцатеричная цифра - четырём двоичным, и преобразования выполняются без арифметических действий, простой перегруппировкой бит из групп по 3 в группы по 4 754_8 = 111 101 100_2 = 1 1110 1100_2 = 1EC_16
const nx = 20; var x: array[1..nx, 1..nx] of integer;z:array[1..nx*2] of integer; i, j, k,n,r,t: integer; begin Writeln('Введите размер матрицы n');Read(n); for i := 1 to n do begin for j := 1 to n do begin Read(k);x[i, j] := k; end;end; Writeln('Исходный массив'); for i := 1 to n do begin for j := 1 to n do begin Write(x[i, j]:4); if x[i, j]>0 then begin t:=t+1; z[t]:=x[i, j];end; end; Writeln; end; Writeln;Writeln('Одномерный массив'); for j := 1 to t do Write(z[j]:4); end.
1.
универсальный, который годится для перевода из любой системы счисления в любую. Число из исходной системы надо перевести в основную, десятичную систему
754_8 = 7*8^2+5*8^1+4*8^0 = 492_10
и затем перевести в целевую систему счисления
492/16=30 остаток от деления 12 - шестнадцатеричная цифра С
30/16=1 остаток от деления 14 - шестнадцатеричная цифра E
1/16=0 остаток от деления 1 - шестнадцатеричная цифра 1
754_8 = 492_10 = 1EC_16
- и второй попроще, основанный на том, что и восьмеричная и двоичная системы - это системы с основанием, равным степени двойки, и перевод из них в двоичную и обратно очень прост
Каждая восьмеричная цифра соответствует трём двоичным, каждая шестнадцатеричная цифра - четырём двоичным, и преобразования выполняются без арифметических действий, простой перегруппировкой бит из групп по 3 в группы по 4
754_8 = 111 101 100_2 = 1 1110 1100_2 = 1EC_16
var x: array[1..nx, 1..nx] of integer;z:array[1..nx*2] of integer;
i, j, k,n,r,t: integer;
begin
Writeln('Введите размер матрицы n');Read(n);
for i := 1 to n do begin
for j := 1 to n do begin
Read(k);x[i, j] := k; end;end;
Writeln('Исходный массив');
for i := 1 to n do begin
for j := 1 to n do begin
Write(x[i, j]:4);
if x[i, j]>0 then begin t:=t+1; z[t]:=x[i, j];end;
end;
Writeln; end;
Writeln;Writeln('Одномерный массив');
for j := 1 to t do
Write(z[j]:4);
end.