Для перевода в двоичную систем счисления последовательно делим число на два нацело до получения в ответе нуля или единицы и выписываем остатки. 512/2=256, остаток 0 256/2=128, остаток 0 128/2=64, остаток 0 64/2=32, остаток 0 32/2=16, остаток 0 16/2=8, остаток 0 8/2=4, остаток 0 4/2=2, остаток 0 2/2=1, остаток 0 А теперь записываем частное и приписываем к нему справа в обратном порядке все остатки. Получаем 1000000000(2). Можно было всего этого и не делать, если мы помним, что 512 - это два в ДЕВЯТОЙ степени. Тогда сразу можно написать единицу и ДЕВЯТЬ нулей.
Для перевода числа из двоичной системы в восьмеричную следует разбить в направлении справа налево двоичное число по три разряда (получая так называемые триАды). А затем каждую триаду заменить соответствующей восьмеричной цифрой. Самую левую триаду, если она неполная, дополняют слева незначащими нулями. В основе такого перевода лежит то, что восемь - это третья степень числа два. 1000000000(2)=001 000 000 000(2)=1000(8)
Для перевода числа из двоичной системы в шестнадцатиричную следует разбить в направлении справа налево двоичное число по четыре разряда (получая так называемые тетрАды). А затем каждую тетраду заменить соответствующей шестнадцатиричной цифрой. Самую левую тетраду, если она неполная, дополняют слева незначащими нулями. В основе такого перевода лежит то, что шестнадцать - это четвертая степень числа два. 1000000000(2)=0010 0000 0000(2)=200(16)
Попробуй Program PascalGuru; var s:string; f,t:text; function preobr(s:string):string;var i,j,p,n,sered:integer; gl,zp,slovo:string; m:array [1..80] of string;beginzp:='!?*,.'; gl:='аоуыэяеёюи'; p:=pos(' ',s); i:=0; repeat inc(i); slovo:=copy(s,1,p-1); m[i]:=slovo; delete(s,1,p); p:=pos(' ',s); until p=0; n:=i+1; m[n]:=s; for i:=1 to n do begin s:=m[i]; if pos(s[length(s)],zp)<>0 then p:=length(s)-1 else p:=length(s); sered:=(p div 2)+1; if (not odd(p)) or (p<3) then continue; if pos(s[1],gl)=0 then continue; if pos(s[sered],gl)=0 then continue; if pos(s[p],gl)=0 then continue; s[1]:=UpCase(s[1]); s[sered]:=UpCase(s[sered]); s[p]:=UpCase(s[p]); m[i]:=s+'('+s[1]+','+s[sered]+','+s[p]+')'; end; s:=''; for i:=1 to n do s:=s+m[i]+' '; preobr:=s;end; beginassign(f,'input.txt'); reset(f);assign(t,'output.txt'); rewrite(t); while not eof(f) do begin readln(f,s); writeln(t, preobr(s) ); end; writeln('Файл успешно записан...'); close(f);close(t);readln;end.
512/2=256, остаток 0
256/2=128, остаток 0
128/2=64, остаток 0
64/2=32, остаток 0
32/2=16, остаток 0
16/2=8, остаток 0
8/2=4, остаток 0
4/2=2, остаток 0
2/2=1, остаток 0
А теперь записываем частное и приписываем к нему справа в обратном порядке все остатки. Получаем 1000000000(2).
Можно было всего этого и не делать, если мы помним, что 512 - это два в ДЕВЯТОЙ степени. Тогда сразу можно написать единицу и ДЕВЯТЬ нулей.
Для перевода числа из двоичной системы в восьмеричную следует разбить в направлении справа налево двоичное число по три разряда (получая так называемые триАды). А затем каждую триаду заменить соответствующей восьмеричной цифрой. Самую левую триаду, если она неполная, дополняют слева незначащими нулями. В основе такого перевода лежит то, что восемь - это третья степень числа два.
1000000000(2)=001 000 000 000(2)=1000(8)
Для перевода числа из двоичной системы в шестнадцатиричную следует разбить в направлении справа налево двоичное число по четыре разряда (получая так называемые тетрАды). А затем каждую тетраду заменить соответствующей шестнадцатиричной цифрой. Самую левую тетраду, если она неполная, дополняют слева незначащими нулями. В основе такого перевода лежит то, что шестнадцать - это четвертая степень числа два.
1000000000(2)=0010 0000 0000(2)=200(16)