Логическая операция Пример Правило
«ИЛИ» (сложение) 1010 OR11001110 Результат единица, если ХОТЯ БЫ ОДИН из операндов равен единице.
«И» (умножение) 1010 AND11001000 Результат единица, если ОБА операнда равны единице.
«Исключающее ИЛИ» (сравнение) 1010 XOR11000110 Результат единица, если операнды ОТЛИЧАЮТСЯ.
«НЕ» (отрицание) 1010 NOT0101 Результат единица, если операнд РАВЕН НУЛЮ.

Заменив в этих правилах единицу на TRUE, а ноль на FALSE, вы получите правила для булевых данных.

Сдвиги влево и вправо

Сдвиг – одна из тех операций обработки регистров, которые выполняют все процессоры. В Паскале тоже предусмотрены две такие операции с числами: сдвиг влево (SHL) и сдвиг вправо (SHR).

Операция левого сдвига (рис. 109) перемещает все биты слова на заданное число позиций влево, при этом младшие биты заполняются нулями, а старшие теряются, например:

N:= 3;       { 3 = 00000011 }

Writeln (N shl 1);       { 6 = 00000110 }

Writeln (N shl 2);       { 12 = 00001100 }

Рис.109 – Сдвиг байта на один разряд влево

Операция правого сдвига (рис. 110) перемещает все биты слова на заданное число позиций вправо. При этом старшие биты заполняются нулями, а младшие теряются.

N:= 3;       { 3 = 00000011 }

Writeln (N shr 1);       { 1 = 00000001 }

Writeln (N shr 2);       { 0 = 00000000 }

Рис.110 – Сдвиг байта на один разряд вправо

Совместив сдвиг с логическими операциями, можно исследовать отдельные биты слова. Перед вами булева функция TestBit, принимающая два параметра: ARG – число, в котором проверяется состояние некоторого бита, и BIT – номер этого бита. Функция возвращает TRUE, если проверяемый бит содержит единицу, и FALSE в противном случае.

function TestBit (arg: longint; bit : byte): Boolean;

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату