4. даны числовой ряд и некоторое число е. найти сумму тех членов ряда, модуль которых больше или равен заданному е. общий член ряда имеет вид: а(п)=1/2*n +1/з*n.c#
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
uses crt; const max=20; var a:array [1..max,1..max] of byte; n,i,j,k,s,s1,s2,s3:integer; x:char; begin x:=x; repeat Writeln('vvedite kol-vo komand N'); Readln(N); until N in [1..max]; for i:=1 to N do for j:=1 to N do A[i,j]:=random(3); For i:=1 to N do begin for j:=1 to N do if i=j then write(#204:4) else Write(a[i,j]:4); writeln; end; writeln('íîìåðà êîìàíä, èìåþùèõ áîëüøå ïîáåä íà ÷óæîì ïîëå'); k:=0; s:=0; s3:=0; for i:=1 to n do begin for j:=1 to n do begin if a[i,j]=2 then s1:=s+1; if a[j,i]=0 then s2:=s3+1; s:=s1; s3:=s2; end; end; if s2>s1 then begin writeln('Nomer komandy - ',i,' Kol. pobed = ',s2); k:=1 end; if k=0 then writeln('takih komand net'); 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
вот программа на языке PASCALABC
uses crt;
const max=20;
var a:array [1..max,1..max] of byte;
n,i,j,k,s,s1,s2,s3:integer;
x:char;
begin
x:=x;
repeat
Writeln('vvedite kol-vo komand N');
Readln(N);
until N in [1..max];
for i:=1 to N do
for j:=1 to N do
A[i,j]:=random(3);
For i:=1 to N do
begin
for j:=1 to N do
if i=j then write(#204:4)
else Write(a[i,j]:4);
writeln;
end;
writeln('íîìåðà êîìàíä, èìåþùèõ áîëüøå ïîáåä íà ÷óæîì ïîëå');
k:=0;
s:=0;
s3:=0;
for i:=1 to n do
begin
for j:=1 to n do
begin
if a[i,j]=2 then s1:=s+1;
if a[j,i]=0 then s2:=s3+1;
s:=s1;
s3:=s2;
end;
end;
if s2>s1 then
begin
writeln('Nomer komandy - ',i,' Kol. pobed = ',s2);
k:=1
end;
if k=0 then writeln('takih komand net');
end.