(Питон) По заданным сведениям об учениках класса определить средний вес мальчиков и средний рост девочек. Вывести фамилию самого высокого ученика в классе.
1) Один байт = 8 бит, максимальное число 2^8 - 1 = 255, если числа без знака. Для знаковых чисел старший бит отводится под знак числа, следовательно, минимальное число = - 2^7 - 1 = - 127, максимальное число = + 127 2) Число 1607, ячейка двухбайтовая, один бит под знак, следовательно, под число отводится 15 бит, в двоичном представлении 1607(10) = 11001000111(2), дополняем до 16 бит, старший бит - знаковый - нулевой, так как число положительное = 0000011001000111(2) - это двоичное представление в двухбайтовой ячейке, чтобы получить шестнадцатиричное представление, разбиваем число справа - налево по 4 бита 0000 0110 0100 0111 и записываем в шестнадцатиричном виде 0111(2) = 7(16) 0100(2) = 4(16) 0110(2) =6(16) 0000(2) = 0(16) 1607(16) = 0647(16) или без старшего не значащего нуля = 647(16) 3) для получения дополнительного кода числа, находят обратное число, или инверсию числа, для этого каждый бит числа изменяют на противоположный, 1 на 0, 0 на 1 105(10) = 1101001(2) - это и есть дополнительный код числа - 105, т.е. дополнительным кодом числа (- а) будет число а. Найдем дополнительный код в однобайтовой ячейке числа 105(10) = 01101001(2), а) находим обратное 01101001(2) ->(обратное) ->10010110(2) б) дополнительный код-> обратный код + 1 ->(дополнительный)->10010111(2), а это число - 105 потому, что отрицательные числа представляются в дополнительном коде. Если для числа - 105 найти дополнительный код, то получим число 105 10010111(2)->(дополнительный)->01101000+1->01101001 = 69(16) = 16*6+9 = 96+9 = 105
Program velobike;
Uses crt,graph;
Var gr:integer;
gm:integer;
x,y:integer;
begin
gr:=detect;
initgraph(gr,gm,'..\bgi');
x:=600;
y:=250;
repeat
for x:=0 to 600 do
begin
cleardevice;
setbkcolor(8);
setcolor(2);
setlinestyle(1,0,1);
rectangle(1,3,639,475);
setfillstyle(1,6);
bar(2,280,638,475);
setcolor(6);
setfillstyle(1,2);
circle(x-150,y,27);
floodfill(x-140,y-10,6);
setcolor(yellow);
circle(x-150,y,3);
setcolor(6);
setfillstyle(1,2);
circle(x-0,y,27);
floodfill(x-0,y-10,6);
setcolor(yellow);
circle(x-0,y,3);
setcolor(yellow);
circle(x-70,y,10);
circle(x-70,y,2);
setcolor(yellow);
arc(x-150,y,355,190,30);
arc(x-0,y,445,200,30);
setcolor(2);
setlinestyle(0,0,2);
line(0,280,639,280);
setcolor(white);
setlinestyle(0,2,3);
moveto(x-110,y-50);
lineto(x-15,y-50);
moveto(x-150,y);
lineto(x-70,y);
lineto(x-10,y-35);
moveto(x-70,y);
lineto(x-110,y-50);
moveto(x-150,y);
lineto(x-110,y-50);
moveto(x-150,y);
lineto(x-170,y-35);
lineto(x-123,y-35);
moveto(x-0,y);
lineto(x-20,y-73);
lineto(x-40,y-60);
moveto(x-20,y-73);
lineto(x-12,y-90);
moveto(x-150,y);
lineto(x-180,y-10);
moveto(x-0,y);
lineto(x-30,y);
setcolor(6);
setlinestyle(0,0,1);
moveto(x-70,y);
lineto(x-55,y-20);
setcolor(red);
lineto(x-45,y-20);
setcolor(8);
moveto(x-70,y);
lineto(x-75,y+20);
setcolor(6);
lineto(x-85,y+20);
setcolor(6);
moveto(x-110,y-50);
lineto(x-115,y-63);
setcolor(red);
moveto(x-40,y-60);
lineto(x-50,y-60);
moveto(x-12,y-90);
lineto(x-22,y-90);
setcolor(red);
setlinestyle(0,0,3);
moveto(x-123,y-63);
lineto(x-103,y-63);
delay(10000);
end;
settextstyle(0,0,3);
cleardevice;
setcolor(red);
outtextxy(30,240,'XoTuTe IIocMoTpeTb eLLLe?');
outtextxy(100,280,' Ha}|{MuTe Enter ');
readln;
until keypressed;
readln;
closegraph;
end.
= - 127, максимальное число = + 127
2) Число 1607, ячейка двухбайтовая, один бит под знак, следовательно, под число отводится 15 бит, в двоичном представлении 1607(10) = 11001000111(2), дополняем до 16 бит, старший бит - знаковый - нулевой, так как число положительное
= 0000011001000111(2) - это двоичное представление в двухбайтовой ячейке, чтобы получить шестнадцатиричное представление, разбиваем число справа - налево по 4 бита
0000 0110 0100 0111 и записываем в шестнадцатиричном виде
0111(2) = 7(16) 0100(2) = 4(16) 0110(2) =6(16) 0000(2) = 0(16)
1607(16) = 0647(16) или без старшего не значащего нуля = 647(16)
3) для получения дополнительного кода числа, находят обратное число, или инверсию числа,
для этого каждый бит числа изменяют на противоположный, 1 на 0, 0 на 1
105(10) = 1101001(2) - это и есть дополнительный код числа - 105, т.е. дополнительным кодом
числа (- а) будет число а.
Найдем дополнительный код в однобайтовой ячейке числа 105(10) = 01101001(2),
а) находим обратное 01101001(2) ->(обратное) ->10010110(2)
б) дополнительный код-> обратный код + 1 ->(дополнительный)->10010111(2), а это число - 105
потому, что отрицательные числа представляются в дополнительном коде.
Если для числа - 105 найти дополнительный код, то получим число 105
10010111(2)->(дополнительный)->01101000+1->01101001 = 69(16) = 16*6+9 = 96+9 = 105