Шаг 53.
Поразрядные (битовые) булевские и сдвиговые операции

    На этом шаге мы рассмотрим правила использования поразрядных логических операций и операций сдвига.

    Поразрядные операции в Object Pascal могут иметь операнды только целого типа. Действие этих операций выполняется поразрядно (побитово) над двоичным представлением операндов.

    Результатом операции not будет целочисленное значение, равное десятичному числу, которое соответствует поразрядно инвертированному двоичному представлению исходного операнда.

    Результатом операции and будет целочисленное значение, равное десятичному числу, которое соответствует двоичному представлению поразрядно выполненной над исходными операндами логической операции И.

    Результатом операции or будет целочисленное значение, равное десятичному числу, которое соответствует двоичному представлению поразрядно выполненной над исходными операндами логической операции ИЛИ.

    Результатом операции хоr будет целочисленное значение, равное десятичному числу, которое соответствует двоичному представлению поразрядно выполненной над исходными операндами логической операции исключающее ИЛИ.

    Результатом операции A shl В будет целочисленное значение, равное десятичному числу, полученному в результате поразрядного сдвига влево двоичного представления операнда А на В разрядов. Освободившиеся при этом разряды заполняются нулями.

    Результатом операции A shr В будет целочисленное значение, равное десятичному числу, полученному в результате поразрядного сдвига вправо двоичного представления операнда А на В разрядов. Освободившиеся при этом разряды заполняются нулями.

    Сведем все сказанное в таблицу:

Таблица 1. Поразрядные операции
Операция Действие Тип операндов Тип результата
Унарные
not Поразрядное отрицание Целый Целый
Бинарные
and Поразрядное И Целый Целый
or Поразрядное ИЛИ Целый Целый
xor Поразрядное исключающее ИЛИ Целый Целый
shl Поразрядный сдвиг влево Целый Целый
shr Поразрядный сдвиг вправо Целый Целый


    Примеры. Если операнды А и В будут иметь тип Byte, то выполнение рассматриваемых операций при А=11, В=2 даст следующие результаты:

Таблица 2. Примеры выполнения операций
  Десятичное значение Двоичное представление
Операнд A 11 00001011
Операнд B 2 00000010
not A 244 11110100
A and B 2 00000010
A or B 11 00001011
A xor B 9 00001001
A shl B 44 00101100
A shr B 2 00000010

    На следующем шаге мы рассмотрим операцию конкатенации.




Предыдущий шаг Содержание Следующий шаг