битовая "маска&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 :=
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz