Статьи Королевства Дельфи


Lesson11


  • 1. Введение. Логические операции. Введение
    Наряду с обычными логическими операция над логическими типами Boolean, часто приходятся выполнять операции и над отдельными битами, обычно используемыми, как флаги. Для эффективной работы необходимо понятие логических операций. Паскаль поддерживает следующие логические операции
    • AND - логическое И;
    • OR - (включающие) логическое ИЛИ;
    • XOR - (исключающие) логическое ИЛИ;
    • NOT - отрицание или инверсия бита;
    • SHL - логический сдвиг влево;
    • SHR - логический сдвиг вправо.
    • Другие логические операции над числами в Паскаль не включены, но доступны через ассемблерные вставки.

      Каждый бит может иметь только два состояния ЛОЖЬ (FALSE) или ИСТИНА (TRUE)

      Состояние бита можно описывать и другими словами, часть которых пришла из математики, часть из электроники, часть из логики.

      Для значения ЛОЖЬ, альтернативные варианты такие - [НЕТ, НОЛЬ, ВЫКЛЮЧЕНО, НЕ УСТАНОВЛЕНО, СБРОШЕНО, FALSE, F, 0, -] и другие.

      Для значения ИСТИНА, альтернативные варианты такие - [ДА, ЕДИНИЦА, ВКЛЮЧЕНО, УСТАНОВЛЕНО, ВЗВЕДЕНО, TRUE, T, 1, +] и другие.

      Рассмотрим эти операции по отдельности AND - логическое И, эта операции выглядит так
      A B Y
      0 0 0
      0 1 0
      1 0 0
      1 1 1
      Выражение истинно, когда истинны оба бита. Присказка "И там И там"

      OR - (включающие) логическое ИЛИ, эта операции выглядит так
      A B Y
      0 0 0
      0 1 1
      1 0 1
      1 1 1
      Выражение истинно, когда истинен хотя бы один бит. Присказка "ИЛИ там ИЛИ там, включая и там и там"

      XOR - (исключающие) логическое ИЛИ, эта операции выглядит так
      A B Y
      0 0 0
      0 1 1
      1 0 1
      1 1 0
      Выражение истинно, когда истинен только один бит. Присказка "ИЛИ там ИЛИ там, исключая и там и там"

      NOT - отрицание или инверсия бита, эта операции применяется только к одному биту, действие простое — текущее значение бита изменяется на противоположное
      A Y
      0 1
      1 0


      SHL - логический сдвиг влево, операции применяется только к группе битов, одного из целочисленных типов Паскаля, например к байту, слову и т.д. Сдвиг байта влево на один разряд.
      РазрядыB7B6B5B4B3B2B1B0
      До10011101
      После00111010

      Сдвиг байта влево на два разряда
      РазрядыB7B6B5B4B3B2B1B0
      До10011101
      После01110100


      Байт смещается влево на один или более разрядов, позиции справа замещаются нулями, позиции слева теряются.

      SHR - логический сдвиг вправо, операции применяется только к группе битов, одного из целочисленных типов Паскаля, например к байту, слову и т.д.
      Сдвиг байта вправо на один разряд.
      РазрядыB7B6B5B4B3B2B1B0
      До10011101
      После01001110

      Сдвиг байта вправо на два разряда.
      РазрядыB7B6B5B4B3B2B1B0
      До10011101
      После00100111


      Байт смещается вправо на один или более разрядов, позиции слева замещаются нулями, позиции справа теряются.




      Начало  Назад  Вперед



      Книжный магазин