Делим 1607 на 2 до тех пор, пока не сможем (то есть пока делимое число не станет равным единице). Получим результат:
11001000111
Нам дана двухбайтовая ячейка. Переведём из байт в биты.
2 байта = 2 · 8 бит = 16 бит.
Нолик или единица по отдельности - это один бит (условно; на самом деле - это выделяемая под них память). В нашем результате 11 бит (то есть 11 ноликов и единичек в сумме), остальные 5 остались незаполненными - отсюда и заполнение нулями (поскольку они ничего в результате не поменяют - таково устройство памяти и двоичного кода).
Program aaa; var Y:array[1..1000,1..1000] of longint; n,m,i,j,count5,countm9,s5,sm9:longint; begin writeln('введите размерность массива'); read(n,m); writeln('введите массив'); for i:=1 to n do for j:=1 to m do read(Y[i,j]); count5:=0; countm9:=0; s5:=0; sm9:=0; for i:=1 to n do for j:=1 to m do begin if Y[i,j]>5 then begin inc(count5); s5:=s5+Y[i,j] end; if Y[i,j]<-9 then begin inc(countm9); sm9:=sm9+Y[i,j] end; end; writeln('всего элементов больше 5:',count5,' ,сумма этих элементов равна:',s5); writeln('всего элементов меньше -9:',countm9,' ,сумма этих элементов равна:',sm9) end.
0000011001000111
Объяснение:
Делим 1607 на 2 до тех пор, пока не сможем (то есть пока делимое число не станет равным единице). Получим результат:
11001000111
Нам дана двухбайтовая ячейка. Переведём из байт в биты.
2 байта = 2 · 8 бит = 16 бит.
Нолик или единица по отдельности - это один бит (условно; на самом деле - это выделяемая под них память). В нашем результате 11 бит (то есть 11 ноликов и единичек в сумме), остальные 5 остались незаполненными - отсюда и заполнение нулями (поскольку они ничего в результате не поменяют - таково устройство памяти и двоичного кода).