1) целая часть десятичной дроби переводится в двоичную систему счисления и записывается;
2) затем дробная часть десятичной дроби умножается на 2;
3) в полученном произведении выделяется целая часть, которая приписывается справа после запятой к целой части из пункта 1).
вычисление завершается, если дробная часть полученного в очередной раз произведения равна нулю или если достигнута требуемая точность вычислений.
[0.85₁₀]=0₁₀=0₂ => 0.85₁₀ = 0, ₂
2{0.85₁₀}=(2*0.85)₁₀=1,7₁₀
[1,7]=1 => 0.85₁₀ = 0,₂
[0,7*2]=[1,4]=1 => 0.85₁₀ = 0,₂
[0,4*2]=[0,8]=0 => 0.85₁₀ = 0,₂
[0,8*2]=[1,6]=1 => 0.85₁₀ = 0,₂
[0,6*2]=[1,2]=1 => 0.85₁₀ = 0,₂
[0,2*2]=[0,4]=0 => 0.85₁₀ = 0,₂
[0,4*2]=[0,8]=0 => 0.85₁₀ = 0,₂
[0,8*2]=[1,6]=1 => 0.85₁₀ = 0,₂
и т.д. до получения числа с нужной точностью.
0.85₁₀ ≈ 0,11011001₂
Поделитесь своими знаниями, ответьте на вопрос:
1.создать массив записей следующего типа: страна территория в км2 население млн.человек столица латвия 67, 7 2, 6 рига литва 65, 2 3, 4 вильнюс польша 313 34, 8 варшава украина 603, 7 50 киев россия 17075, 4 139 москва найти и вывести страну с наибольшей плотностью населения. сделайте (abc паскаль)
program qw; uses crt; type atlas=record country,capital: string; area,people: real; end; ps=file of atlas; var f: ps; z,t: atlas; begin assign(f,'1.dat'); rewrite(f); z.country: ='латвия'; z.area: =67.7; z.people: =2.6; z.capital: ='рига'; write(f,z); z.country: ='литва'; z.area: =65.2; z.people: =3.4; z.capital: ='вильнюс'; write(f,z); z.country: ='польша'; z.area: =313; z.people: =34.8; z.capital: ='варшава'; write(f,z); z.country: ='украина'; z.area: =603.7; z.people: =50; z.capital: ='киев'; write(f,z); z.country: ='россия'; z.area: =17075.4; z.people: =139; z.capital: ='москва'; write(f,z); close(f); assign(f,'1.dat'); reset(f); read(f,t); while not(eof(f)) do begin read(f,z); if t.people/t.area < z.people/z.area then t: =z; end; close(f); writeln('cтранa с наибольшей плотностью населения: '); writeln(t.country,' (плотность населения равна ',t.people/t.area: 9: 6,' млн на кв.км)'); end.