битовая "маска&qu
битовая "маска" (переменная mask), содержащая единственный ненулевой бит, позиция которого при работе цикла меняется от младшего до старшего (либо в обратную сторону). При единичном значении очередного бита проверяемого числа (переменная a) логическое умножение очередного значения маски на содержимое проверяемого числа маску не меняет. Этот факт и проверяется для увеличения счетчика (sum).
В качестве pешения предлагаю приведенную ниже программу, с которой вам будет полезно "поупражняться" (предполагается, что ввод данных корректен). Заметим, впрочем, что есть и другие механизмы подсчета. (Может быть, вы сумеете сконструировать их самостоятельно!?)
program SUM_BIT;
var
a, mask: word;
i: 0..15;
sum: 0..16;
begin
write('Введите число 0..65535 (2^16-1): ');
readln(a);
mask := 1; {двоичное число 0000 0000 0000 0001}
sum := 0;
for i := 0 to 15 do begin
{проверка битовой 1 в соответствующем разряде}
if mask and a = mask then inc (sum);
mask :=
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа