Булевское выражение — Большая Энциклопедия Нефти и Газа, статья, страница 1
Cтраница 1
Булевское выражение — это выражение, которое принимает значение True или False, Оно состоит из выражений отношений, булевских операторов, булевских переменных и / или других булевских выражений. [1]
Булевское выражение служит для задания правил вычисления некоторого логического значения — подобно тому, как арифметическое выражение служит для задания правил вычисления некоторого числового значения. [2]
Условные арифметические и булевские выражения также могут использоваться в операторах присваивания в качестве их правых частей. [3]
Первичными булевскими выражениями являются логические значения true и false, отношения, логические переменные, указатели логических функций и булевские выражения ( безусловные или условные), заключенные в круглые скобки. [4]
Если булевское выражение Е в (7. 16) в свою очередь является условным, то для вычисления его значения снова применяем то же самое правило, так что вычисление значения условного выражения носит рекурсивный характер, Например, в качестве значения условного выражения вида (7.14) принимается значение выражения В2, если В1 принимает значение истина, значение выражения В4, если В1 принимает значение ложь, но ВЗ принимает значение истина, и значение выражения В5, если и В1, и ВЗ принимают значение ложь.
[5]
Поскольку булевские выражения в условиях также могут быть условными, то, очевидно, процесс вычисления значения булевского выражения носит рекурсивный характер и по этой причине: к булевскому выражению, входящему в условие, применяется то же самое формулируемое здесь правило для вычисления его значения. [6]
Имеются дополнительные булевские выражения для сравнения элементных выражений и множеств. Например, множество А меньше множества В, если оно является соответствующим подмножеством В.
А — арифметические и булевские выражения, но и идентификаторы, описанные в программе в качестве массивов. [8]
Порядок вычисления булевских выражений важен и в случае сравнения указателей. [9]
В определении первичного булевского выражения фигурируют также указатели логических функций. [10]
Краткое описание системы BEAGLE. [11] |
Правила являются булевскими выражениями. [12]
THEN; рассматривается булевское выражение. Если его значение ненулевое ( истина), то выполняется следующий оператор после THEN. [13]
Отметим еще некоторые простейшие булевские выражения, которые остаются истинными, независимо от истинности или ложности входящих в них высказываний. [14]
Как видно, условное булевское выражение определяется рекурсивно: в его образовании участвует само определяемое понятие ( условное булевское выражение как частный случай булевского выражения) как в условии, так и справа от символа иначе.
[15]
Страницы: 1 2 3 4
Выражения фильтра посылок
Выражения фильтра посылокСодержание
- Типы данных
- Статусы посылок
- Преобразования типов
- Примитивы доступа к базе посылок
- Другие примитивы
- Приоритеты операций
- Операции
- Примеры
Выражение фильтра посылок позволяет задать условия, которым должны удовлетворять параметры посылок, чтобы быть показанными в списке посылок, генерируемом CGI-программами new-master и new-judge. Выражение фильтра должно иметь тип bool, а в противном случае генерируется ошибка.
При генерации страницы привилегированного пользователя в
CGI-программах new-judge или new-master выражение фильтра
используется следующим образом. Выражение фильтра применяется ко
всем записям в базе посылок, и если на некоторой записи
результат вычисления выражения равен true, то данная запись
помечается как удовлетворяющая фильтру. Если при вычислении
выражения фильтра хотя бы для одной посылки возникла ошибка,
отображается информация об ошибке, а не результаты фильтрации.
Если при вычислении выражения фильтра для всех записей
завершилось успешно, из записей, удовлетворяющих выражению
фильтра, отображаются записи в соответствии с заданным номером
первой и номером последней записей.
Выражение фильтра посылок имеет Си-подобный синтаксис. Пробельные символы, разделяющие элементы выражения, игнорируются. В именах типов и полей регистр символов является значимым.
Типы данных
Выражение фильтра посылок строго типизировано. Выражение может состоять из операций над значениями следующих типов:
- Булевский. Булевский тип обозначается bool. Литералы булевского типа обозначаются false и true соответственно.
- Целый. Целый тип обозначается int. В текущей реализации целый тип
является 32-битным знаковым типом
(диапазон значений от -2147483648 до 2147483647).
Литералы целого типа могут записываться в восьмеричной,
десятичной и шестнадцатеричной системах счисления как в языке Си.
Знак «минус» перед числом не является частью числа, а рассматривается как унарная операция изменения знака.
- Строковой. Строковой тип обозначается string. Литералы строкового типа записываются либо в кавычках («), либо в апострофах (‘). Литералы первого вида не могут содержать внутри себя символ кавычки, а литералы второго вида — символ апострофа.
- Календарный. Календарный тип обозначается date_t и предназначен для записи астрономического времени. Литералов календарного типа не существует. Астрономическое время при расчётах представляется в формате POSIX, то есть как количество секунд, прошедших с 1 января 1970 года.
- Длительностный. Длительностный тип обозначается dur_t и предназначен для записи длительностей. При расчётах длительностный тип рассматривается как целый тип, и все длительности представляются в секундах. Литералов длительностного типа не существует.
- Размерный. Размерный тип обозначается size_t и предназначен для
представления размеров объектов.
Литералов размерного типа не существует. При расчётах размерный тип рассматривается как беззнаковый целый тип.
- Статусный. Статусный тип обозначается result_t и предназначен для представления статуса посылки. Статусный тип — это перечислимый тип, состоящий из литералов OK, CE, RT, TL, PE, WA, CF, PT, AC, IG, DQ, PD, ML, SE, RU, CD, CG, AV, EM, VS, VT.
- Контрольный. Контрольный тип обозначается hash_t и предназначен для представления значений контрольной суммы SHA1. Литералов контрольного типа не существует.
- Адресный. Адресный тип обозначается ip_t и предназначен для представления IP-адресов. Литералов адресного типа не существует.
Статусы посылок
OK | OK |
CE | Compilation error |
RT | Run-time error |
TL | Time-limit exceeded |
PE | Presentation error |
WA | Wrong answer |
CF | Check failed (internal error) |
PT | Partial solution |
AC | Accepted |
IG | Ignored |
DQ | Disqualified |
PD | Pending |
ML | Memory-limit error |
SE | Security violation |
SY | Synchronization error |
SV | Style violation |
WT | Wall time (real time) limit exceeded |
PR | Pending review |
SM | Summoned for defence |
RJ | Rejected |
RU | Running (in testing queue or being tested) |
CD | Compiled (but not yet running) |
CG | Compiling (in compile queue or being compiled) |
AV | Available for testing |
EM | Empty record |
VS | Virtual start |
Virtual stop |
Преобразования типов
Выражение фильтра посылок строго типизировано, но для
преобразований значений одного типа в значения другого типа
могут использоваться операции преобразования типа. Операция
преобразования типа записывается в стиле Си++, то есть следующим
образом:
type-cast-op = type-name "(" expr ")"Здесь type-name — имя типа, одно из перечисленных выше bool, int, string, date_t, dur_t, size_t, result_t, hash_t, ip_t. Не все возможные преобразования типов допустимы. Возможные комбинации исходного типа и целевого типа показаны в таблице ниже. В строках таблицы записан исходный тип, а в столбцах таблицы — целевой тип.
bool | int | string | date_t | dur_t | size_t | result_t | hash_t | ip_t | |
---|---|---|---|---|---|---|---|---|---|
bool | + | + | + | ||||||
int | + | + | + | + | + | + | + | + | |
string | + | + | + | + | + | + | + | + | + |
date_t | + | + | + | + | |||||
dur_t | + | + | + | + | |||||
size_t | + | + | + | + | |||||
result_t | + | + | + | + | |||||
hash_t | + | + | + | + | |||||
ip_t | + | + | + | + |
Рассмотрим подробнее каждое нетривиальное преобразование типов.
Примитивы доступа к базе посылок
Текущей посылкой назовём обрабатываемую при вычислении выражения фильтра посылку. На основании результата вычисления выражения фильтра определяется, может ли быть отображена текущая посылка.
Примитивы доступа к базе посылок позволяют получать значения полей как текущей посылки, так и любой другой посылки с заданным номером. Примитивы имеют следующий общий вид:
f [ ( expr ) ]Здесь в квадратных скобках [ и ] записана необязательная часть. Круглые скобки ( и ) обозначают сами себя. \V{f} — это имя примитива, а expr — это выражение целого типа. Если выражение в скобках не задано, то берётся значение поля, соответствующего имени примитива f, текущей посылки. Если выражение в скобках не является выражением целого типа, генерируется ошибка. В противном случае выражение вычисляется, и пусть при вычислении выражения ошибок не возникло, а n — результат вычисления выражения.
Если n < 0, то n задаёт номер посылки начиная от последней,
то есть n‘ = N + n$, где N — общее количество посылок в базе посылок в данный момент. В противном случае предполагаем,
что n задаёт номер посылки начиная от нулевой, то есть n‘ = n.
Если теперь n‘ < 0 или n‘ ≥ N, то генерируется
ошибка вычисления выражения фильтра. Если же n‘ удовлетворяет
ограничениям, берётся значение поля, соответствующего имени
примитива f, в посылке с номером n‘.
Примитивы доступа к базе посылок перечислены в таблице.
Имя примитива | Тип значения | Описание |
---|---|---|
id или run_id | int | Номер посылки (значение поля run_id). Посылки нумеруются от 0. |
time | time_t | Астрономическое время получения посылки сервером (значение поля time) |
dur | dur_t | Длительность времени от начала турнира до получения посылки сервером (то есть разность между временем получения посылки и моментом начала турнира) |
size | size_t | Размер исходного текста программы в байтах (значение поля size).![]() |
hash | hash_t | Хэш-код текста программы (значение поля sha1). |
uuid | string | Уникальный идентификатор посылки (значение поля run_uuid). |
ip | ip_t | IP-адрес клиента, на котором работает веб-браузер, и с которого была получена данная посылка (значение поля ip). |
uid или user_id | int | Идентификатор пользователя, от имени которого была выполнена данная посылка (значение поля user_id). Идентификатор пользователя всегда больше нуля. |
login | string | Регистрационное имя (login) пользователя, от имени которого была выполнена данная посылка. |
name | string | Имя (name) пользователя, от имени которого была выполнена данная посылка. |
group | string | Группа первого участника пользователя, от имени которого
была выполнена данная посылка.![]() |
cypher | string | Шифр пользователя, от имени которого была выполнена данная посылка. |
lang или lang_id | string | Короткое имя языка программирования, который был использован в данной посылке. Идентификатор языка программирования находится в поле lang_id записи базы посылок, а короткое имя языка программирования берётся из значения конфигурационной переменной short_name секции описания языка программирования файла конфигурации турнира serve.cfg. |
arch | string | Архитектура языка программирования |
prob или prob_id | string | Короткое имя задачи, решаемой в данной посылке. Идентификатор задачи находится в поле prob_id записи базы посылок, а короткое имя задачи берётся из значения конфигурационной переменной short_name секции описания задачи файла конфигурации турнира serve.cfg. |
result или status | result_t | Статус посылки (значение поля status).![]() |
score | int | Балл за данную посылку без учёта штрафных баллов за посылки (значение поля score). |
test | int | Минимальный номер теста, на котором программа дала неверный результат, или количество успешно пройденных тестов в зависимости от типа турнира. |
imported | bool | Флаг импортированной посылки (значение поля is_imported). |
hidden | bool | Флаг скрытой посылки (значение поля is_hidden). |
readonly | bool | Флаг неизменяемой посылки (значение поля is_readonly). |
variant | int | Действительный вариант. Если для вариантной задачи номер варианта, хранящийся в базе посылок (значение поля variant), равен 0, используется номер варианта, установленный в файле карты вариантов, устанавливаемом глобальной конфигурационной переменной variant_map_file конфигурационного файла описания турнира serve.![]() |
rawvariant | int | Хранимый вариант задачи в посылке (значение поля variant). |
userinvisible | bool | true, если посылка выполнена пользователем, у которого установлен статус invisible. |
userbanned | bool | true, если посылка выполнена пользователем, у которого установлен статус banned. |
userlocked | bool | true, если посылка выполнена пользователем, у которого установлен статус locked. |
userincomplete | bool | true, если посылка выполнена пользователем, у которого установлен статус incomplete. |
userdisqualified | bool | true, если посылка выполнена пользователем, у которого установлен статус disqualified. |
latest | bool | true, если посылка имеет статус OK, Partial solution или Accepted for testing и после нее нет посылок того же пользователя по той же задаче с этими статусами.![]() |
afterok | bool | true, если у этого пользователя уже была посылка по этой же задаче, которая получила статус OK |
judge_id | int | Идентификационный номер запроса на тестирование (поле judge_id). Идентификационный номер изменяется в диапазоне от 1 до 65535. Число 0 означает отсутствие идентификационного номера. |
inusergroup(GRP) | bool | true, если этот пользователь принадлежит указанной группе пользователей. Название группы пользователей записывается как строка. Пример: inusergroup(«Group1»). |
Другие примитивы
В выражении фильтра можно использовать примитивы для получения текущего времени, текущей продолжительности турнира и некоторые другие. Все такие примитивы рассмотрены в данном разделе. Примитивы имеют следующий общий вид:
pгде p — это имя примитива.

Имя примитива | Тип значения | Описание |
---|---|---|
now | time_t | Текущее астрономическое время. |
start | time_t | Астрономическое время начала турнира. |
finish | time_t | Астрономическое время завершения турнира. |
total | int | Общее количество записей в базе посылок. |
Приоритеты операций
В данном разделе перечислены все операции, допустимые в выражении фильтра. Операции перечисляются в порядке убывания приоритета от наиболее приоритетных к наименее приоритетным. Приоритеты операций совпадают с приоритетами операций в языках Си, Си++, Java.
- Все литеральные значения (булевские, целые, строковые, статусные), все примитивы, операции преобразования типа, операция записи выражения в скобках (expr).
- Префиксные операции ~, !, -, +.
. Читается слева направо.
- Операция побитового «или» |. Читается слева направо.
- Операция логического «и» && или and (эти формы записи синонимичны). Читается слева направо.
- Операция логического «или» || или or (эти формы записи синонимичны). Читается слева направо.
Далее рассмотрим все перечисленные операции.
Операции
Операция побитового отрицания ~
Операция применима только к значению типа int. Результат операции — значение типа int, получаемое побитовым отрицанием первого значения.
Операция логического отрицания !
Операция применима только к значению типа bool. Результат операции — значение типа bool, получаемое логическим отрицанием исходного значения.
Операция смены знака —
Унарная операция смены знака применима только к значению типа
int. Результат операции — значение типа int с
противоположным знаком. Если результат операции не представим
в типе int (то есть 32-битным знаковым числом),
диагностируется ошибка переполнения.
«Пустая» операция +
Данная операция применима только к значению типа int и даёт результат типа int. Результирующее значение равно исходному.
Операция умножения *
Для операции умножения возможны следующие комбинации типов операндов.
- Оба аргумента имеют тип int. Результат имеет тип int. Если результат не представим в типе int диагностируется переполнение.
- Один аргумент имеет тип int, а другой — dur_t. В этом случае результат имеет тип dur_t. Если произведение аргументов не представимо в типе dur_t, диагностируется переполнение.
- Один аргумент имеет тип int, а другой — size_t. Значение аргумента целого типа в данном случае должно быть больше нуля. Произведение имеет тип size_t. Если значение произведения не представимо в типе size_t, диагностируется переполнение.
Операция целочисленного деления /
Для операции целочисленного деления возможны следующие
комбинации типов операндов. Если делитель равен нулю,
диагностируется ошибка деления на ноль. Если результат операции
не представим в типе результата, диагностируется ошибка
переполнения. Например, при делении минимального значения типа
int, равного −231 на −1 получается значение
231, не представимое в типе int.
- Оба аргумента имеют тип int. Тогда результат имеет тип int.
- Оба аргумента имеют тип dur_t. Тогда результат имеет тип int.
- Оба аргумента имеют тип size_t. Тогда результат имеет тип int.
- Делимое имеет тип dur_t, а делитель — тип int. Тогда результат имеет тип dur_t.
- Делимое имеет тип size_t, а делитель — тип int. Результат в этом случае имеет тип size_t. Делитель должен быть положителен.
Операция взятия остатка от деления %
Операция взятия остатка поддерживает несколько комбинаций типов
аргументов. Если делитель равен нулю, диагностируется ошибка
деления на ноль. Если тип делителя — какой-либо знаковый тип
(например, int или dur_t), и делитель отрицателен,
диагностируется ошибка неверного аргумента. Если результат
операции не представим в типе результата, диагностируется ошибка
переполнения. Допустимые комбинации типов операндов перечислены
ниже.
- Оба аргумента имеют тип int. Тогда результат имеет тип int.
- Оба аргумента имеют тип dur_t. Тогда результат имеет тип int.
- Оба аргумента имеют тип size_t. Тогда результат имеет тип int.
- Делимое имеет тип dur_t, а делитель — тип int. Тогда результат имеет тип dur_t.
- Делимое имеет тип size_t, а делитель — тип int. Результат в этом случае имеет тип size_t.
Операция сложения +
Операция сложения применима ко многим комбинациям типов операндов. В любом случае, если результат операции не представим в типе результата, генерируется ошибка переполнения. Допустимые комбинации типов операндов перечислены ниже.
- Оба аргумента имеют тип int. Результат также имеет тип int.
- Оба аргумента имеют тип string. Результат имеет тип
string и равен конкатенации двух строк.
- Оба аргумента имеют тип dur_t. Результат также имеет тип dur_t.
- Оба аргумента имеют тип size_t. Результат также имеет тип size_t.
- Один аргумент имеет тип int, а другой — time_t. Результат имеет тип time_t.
- Один аргумент имеет тип int, а другой — dur_t. Результат имеет тип dur_t.
- Один аргумент имеет тип time_t, а другой — dur_t. Результат имеет тип time_t.
Операция вычитания —
Операция вычитания применима ко многим комбинациям типов операндов. В любом случае, если результат операции не представим в типе результата, генерируется ошибка переполнения. Допустимые комбинации типов операндов перечислены ниже.
- Оба аргумента операции имеют тип int. Результат также имеет тип int.
- Первый аргумент операции имеет тип int, а второй — dur_t. Результат операции имеет тип dur_t.
- Первый аргумент операции имеет тип time_t, а второй — int. Результат операции имеет тип time_t.
- Оба аргумента операции имеют тип time_t.
В этом случае результат имеет тип dur_t.
- Первый аргумент операции имеет тип time_t, а второй — dur_t. Результат имеет тип time_t.
- Первый аргумент имеет тип dur_t, а второй — int. Результат имеет тип dur_t.
- Оба аргумента операции имеют тип dur_t. В этом случае результат имеет тип dur_t.
- Первый аргумент операции имеет тип size_t, а второй — int. Тогда результат имеет тип size_t.
- Оба аргумента операции имеют тип size_t. В этом случае результат имеет тип int.
Операции сдвига << и >>
Операции побитового сдвига влево << и побитового сдвига
вправо >> применимы только к операндам типа int.
Результат операции имеет тип int. Второй аргумент операции
(количество бит сдвига) должен находиться в отрезке от 0 до 32
включительно. Если это условие не выполняется, генерируется
ошибка недопустимого аргумента операции. Сдвиг вправо
выполняется как побитовый сдвиг, то есть на место старших
разрядов числа помещаются нулевые биты. , &, |
Побитовые операции применимы только к аргументам типа int и в результате дают значение типа int.
Логические операции && и ||
Логические операции применимы только к аргументам типа bool и дают в результате значение типа bool. Как и в языке Си значение второго аргумента операции не вычисляется, если значение всего выражение известно.Примеры
Показать посылки на языке gcc:
lang == "gcc"
Показать посылки по задаче A:
prob == "A"
Показать успешные посылки пользователя с логином serge:
login == "serge" && status == OK
Введение в булеву логику — GeeksforGeeks
Булева алгебра — это тип алгебры, который создается путем работы с двоичной системой. В 1854 году Джордж Буль, английский математик, предложил эту алгебру. Это вариант логики высказываний Аристотеля, в которой используются символы 0 и 1, или Истина и Ложь. Булева алгебра связана с бинарными переменными и логическими операциями.
Логическое выражение и переменные
Логическое выражение — это выражение, которое при вычислении дает логическое значение, истинное или ложное, единственный способ выразить логическое значение. Принимая во внимание, что логические переменные — это переменные, которые хранят логические числа. P + Q = R — логическая фраза, в которой P, Q, R — логические переменные, которые могут хранить только два значения: 0 и 1. Компьютер выполняет все операции, используя двоичные 0 и 1, поскольку компьютер понимает машинный язык (0/1 ). Булева логика, названная в честь Джорджа Буля, представляет собой тип алгебры, в которой все значения сводятся к одной из двух возможностей: 1 или 0. Чтобы эффективно понять булеву логику, мы должны сначала понять правила булевой логики, а также истину таблицы и логические вентили.
Таблицы истинности
Таблица истинности представляет все разнообразие комбинаций входных и выходных значений в виде таблицы. В нем показаны все возможности ввода и вывода и, следовательно, сохраняется таблица истинности имени. В логических задачах, таких как булева алгебра и электронные схемы, обычно используются таблицы истинности. T или 1 означает «Истина», а F или 0 означает «Ложь» в таблице истинности.
Пример:
А B X = A.B T T T T F F F T F F F F
Логические элементы
Логические элементы – это виртуальное или физическое устройство, выполняющее логическую функцию. Они используются для создания логических схем. Логические элементы являются основными компонентами любой цифровой системы. Эта электрическая цепь может иметь только один выход и 1 или более входов. Связь между входом и выходом регулируется определенной логикой. Логические вентили И, ИЛИ, НЕ и т. д. являются примерами логических вентилей.
1. Элемент И (Продукт): Логический элемент с двумя или более входами и одним выходом называется элементом И. Правила логического умножения используются для работы вентиля И. Логический элемент И может иметь любое количество входов, хотя наиболее распространенными являются вентили И с двумя и тремя входами. Если на каком-либо из входов низкий уровень (0), на выходе этого вентиля также низкий уровень. Когда все входы имеют высокий уровень (1), выход также будет высоким.
Логическая схема:
Таблица истинности:
Для вентиля И выход X истинен тогда и только тогда, когда оба входа P и Q истинны. So the truth table of AND gate is as follows:
P | Q | X = P.Q |
---|---|---|
T | T | T |
T | F | F |
Ж | Т | Ж |
F | F | F |
2. Элемент ИЛИ (сумма): Логический элемент, выполняющий операцию логического ИЛИ, называется элементом ИЛИ. Если один или оба входа вентиля имеют высокий уровень, логическая операция ИЛИ выдает высокий уровень на выходе (1). (1). Если ни на одном из входов нет высокого уровня, результатом будет низкий уровень на выходе (0). Точно так же, как вентиль И может иметь неограниченное количество входных пробников, вентиль ИЛИ может иметь только один выходной пробник. Логический элемент ИЛИ находит максимум между двумя двоичными цифрами.
Логическая схема:
Таблица истинности:
Для вентиля ИЛИ выход X истинен тогда и только тогда, когда любой из входов P или Q истинен. So the truth table of OR gate is as follows:
P | Q | X = P + Q |
---|---|---|
T | T | T |
T | F | Т |
Ф | Т | Т |
F | F | F |
3. Логические элементы НЕ (дополнение): Инвертирующие логические элементы НЕ — это устройства, которые принимают только один вход с выходным уровнем, который обычно равен 1 низким до логического уровня 0, когда их единственный вход находится на логическом уровне 1, или, другими словами, они инвертируют свой входной сигнал. Выход вентиля НЕ возвращает высокий уровень только тогда, когда его вход находится на уровне логического 0. Выход ~ P (~ обозначает «нет») одного входного вентиля НЕ является истинным только тогда, когда вход P ложный или мы можем сказать «неправда». Его также называют обратным вентилем, поскольку он приводит к отрицанию входного логического выражения.
Логическая схема:
Таблица истинности:
Для вентиля НЕ выход X истинен тогда и только тогда, когда вход P ложен. So the truth table of NOT gate is as follows:
P | ~P |
---|---|
T | F |
F | T |
4. NAND Gate: Логический вентиль, известный как вентиль И-НЕ, обеспечивает низкий уровень выходного сигнала (0), только если все его входы истинны, и высокий уровень выходного сигнала (1) в противном случае. В результате вентиль И-НЕ является инверсией вентиля И, и его схема создается путем соединения вентиля И и вентиля НЕ. NAND означает «не И» Gate, и это приводит к ложному результату только тогда, когда оба входа P и Q истинны. Вентиляторы И (вместе с вентилями ИЛИ-НЕ) известны как универсальные вентили, потому что они представляют собой форму логических вентилей, которые могут реализовывать любую логическую функцию без использования вентилей любого другого типа.
Логическая схема:
Таблица истинности:
Для вентиля И-НЕ выход X ложен тогда и только тогда, когда оба входа (т. е. P и Q) истинны. So the truth table of the NAND gate is as follows:
P | Q | ~(P.![]() |
---|---|---|
T | T | F |
T | F | Т |
Ф | Т | T |
F | F | T |
5. NOR GATE: Логический затвор false, и низкий выход (0) в противном случае. В результате вентиль ИЛИ-НЕ является обратным вентилю ИЛИ, и его схема создается путем соединения вентилей ИЛИ и вентилей НЕ. NOR означает «не ИЛИ» Gate, и это приводит к истине только тогда, когда оба входа P и Q ложны.
Логическая схема:
Таблица истинности:
Для вентиля И-НЕ выход X истинен тогда и только тогда, когда оба входа (т. е. P и Q) ложны. So the truth table of NOR gate is as follows:
P | Q | X = ~(P + Q) |
---|---|---|
T | T | F |
T | Ф | Ф |
Ф | Т | Ф |
F | F | T |
и один выход. Только один из входов вентиля XOR должен быть истинным, чтобы выход был истинным. Выход вентиля XOR ложен, если оба его входа ложны, или истинен, если оба его входа истинны. Исключающее ИЛИ означает вентиль «Исключающее ИЛИ», и он приводит к истине только тогда, когда любой из двух входов P и Q истинен, т. е. либо истинно P, либо истинно Q, но не оба одновременно.
Logical circuit:
Truth table:
P | Q | X = P ⊕ Q |
---|---|---|
T | T | F |
T | F | T |
F | T | T |
F | F | F |
7. XNOR Gate: An NOR gate (also known as an Exclusive NOR gate) — это цифровой логический вентиль, который находится прямо напротив вентиля XOR. Он имеет два или более входа и один выход. Когда один из двух его входов истинен, но не оба, он вернет ложь. XNOR означает «Исключающее ИЛИ» Gate, и его результат истинен только тогда, когда оба его входа P и Q либо истинны, либо ложны.
Logical circuit:
Truth table:
P | Q | X = P XNOR Q |
---|---|---|
T | T | T |
T | F | F |
F | T | F |
F | F | T |
Laws For Boolan.0003
Закон | или форма | и форма | ||||
---|---|---|---|---|---|---|
Закон о личности | P + 1 = P | P.0 = P | ||||
IDEMPOTTETTETTETTETTOT | = P | |||||
IDEMPOTOTTETTETTETTETTOT. | P.P = P | |||||
Закон о коммутативном виде | P + Q = Q + P | P.![]() | ||||
NULL LAW | 1 + P = P | 0.P = P | 1 + P = P | 0.P = P | 1 + P = P | 0.P = P |
П + (~П) = 1 | P.(~P) = 0 | |||||
Ассоциативный закон | P + (Q + R) = (P + Q) + R | P.(Q.R) = (P.Q).R | ||||
Распределительный закон | P + QR = (P + Q).(P + R) | P.(Q + R) = P.Q + P.R | ||||
Закон поглощения | P + PQ = P | P.( P + Q) = P | ||||
Закон де Моргана | ~(P + Q) = (~P).(~Q) | ~(P.Q) = (~P) + (~Q) |
Законы де Моргана
Закон Де Моргана гласит:
Утверждение 1: Дополнение произведения (И) двух логических переменных (или выражений) равно сумме (ИЛИ) дополнения каждой логической переменной (или выражения) .
~(P.Q) = (~P) + (~Q)
Доказательство:
Утверждение: ~(P. Q) = (~P) + (~Q)
Таблица истинности:
P | Q | (~P) | (~Q) | ~(P.Q) | (~P)+(~Q) |
---|---|---|---|---|---|
T | T | F | F | F | F |
T | F | F | T | T | T |
F | T | T | F | T | T |
F | F | T | T | T | T |
Мы можем ясно видеть, что значения истинности для ~(P.Q) равны значениям истинности для (~P) + (~Q), соответствующие тем же входным данным.
Заявление 2: Дополнение суммы (ИЛИ) двух логических переменных (или выражений) равно произведению (И) дополнения каждой логической переменной (или выражения).
~(P + Q) = (~P).(~Q)
Доказательство
Утверждение: ~(P+Q) = (~P). (~Q)
Таблица истинности :
P | Q | (~P) | (~Q) | ~(P + Q) | (~P).(~Q) | 0027 |
---|---|---|---|---|---|
T | T | F | F | F | F |
T | F | F | T | F | F |
F | T | T | F | F | F |
F | F | T | T | T | T |
Логические схемы
Электрическая схема, в которой мы можем подать один или несколько двоичных входов (предполагая два состояния, включено или выключено) и получить один двоичный выход, соответствующий входу, способом, который можно описать как функцию в символическая логика. Элементы И, ИЛИ и НЕ представляют собой базовые логические схемы, выполняющие логические функции — И, ИЛИ и НЕ соответственно. Компьютеры могут выполнять более сложные задачи со схемами, чем с одним вентилем.
Пример: Цепочка из двух логических элементов является наименьшей схемой. Рассмотрим следующую схему:
Эта логическая схема предназначена для логического выражения: (P + Q).R.
Здесь используется первый логический элемент ИЛИ: входы P, Q и выход P + Q.
Затем используется логический элемент И: (P + Q), R является входом в него и (P + Q).R является выходом.
Итак, таблица истинности:
P Q R P + Q X = (P + Q).R T T T T T T T F T F T F T T T T F F T F F T T T Т F T F T F F
Примеры вопросов
Вопрос 1. Что такое универсальные ворота?
Решение:
Универсальные вентили — это логические вентили, которые могут реализовывать любую булеву функцию без необходимости использования каких-либо дополнительных вентилей. Универсальных ворот в цифровой электронике всего два:
1. Ворота НЕ-И и
2. Ворота НЕ-ИЛИ.
Вопрос 2. Проектируйте логическую схему для: A.B + B.C
Решение:
Вопрос 3. Что будет Boolean для выражения для следующей логической цепи:
9000 2
Решение:
X = ~(P + Q).R + S
Вопрос 4. Проверьте с помощью таблицы истинности: P + P.Q = P
Решение:
The truth table for P + P.
Q = P
P Q P.Q P + P.Q T T T T T F F T F T F F F F F F В таблице истинности мы видим, что значения истинности для P + P.Q точно такие же, как и для P.
Логические выражения — Visual Basic
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
- Статья
- 3 минуты на чтение
Логическое выражение — это выражение, результатом которого является значение логического типа данных: True
или Ложь
. Булевы выражения
могут принимать несколько форм. Самым простым является прямое сравнение значения логической переменной
с литералом Boolean
, как показано в следующем примере.
Если новыйКлиент = Истина Тогда ' Вставьте код для выполнения, если newCustomer = True. Еще ' Вставьте код для выполнения, если newCustomer = False. Конец, если
Два значения оператора =
Обратите внимание, что оператор присваивания newCustomer = True
выглядит так же, как выражение в предыдущем примере, но выполняет другую функцию и используется по-другому. В предыдущем примере выражение newCustomer = True
представляет логическое значение, а знак =
интерпретируется как оператор сравнения. В автономном операторе знак
=
интерпретируется как оператор присваивания и присваивает значение справа переменной слева. Следующий пример иллюстрирует это.
Если НовыйКлиент = Истина Тогда новыйКлиент = Ложь Конец, если
Для получения дополнительной информации см. Сравнение значений и заявления.
Операторы сравнения
Операторы сравнения, такие как =
, <
, >
, <>
, <=
и >=
, производят левое выражение логических выражений, сравнивая их оператор к выражению в правой части оператора и оценивая результат как Верно
или Ложно
. Следующий пример иллюстрирует это.
42 < 81
Поскольку 42 меньше 81, логическое выражение в предыдущем примере оценивается как True
. Дополнительные сведения об этом типе выражений см. в разделе Сравнение значений.
Операторы сравнения в сочетании с логическими операторами
Выражения сравнения можно комбинировать с использованием логических операторов для получения более сложных логических выражений. В следующем примере демонстрируется использование операторов сравнения в сочетании с логическим оператором.
x > y And x < 1000
В предыдущем примере значение общего выражения зависит от значений выражений с каждой стороны оператора And
. Если оба выражения равны True
, то общее выражение оценивается как True
. Если одно из выражений имеет значение False
, тогда все выражение оценивается как False
.
Операторы короткого замыкания
Логические операторы AndAlso
и OrElse
проявляют поведение, известное как короткое замыкание . Оператор короткого замыкания сначала оценивает левый операнд. Если левый операнд определяет значение всего выражения, то выполнение программы продолжается без вычисления правого выражения. Следующий пример иллюстрирует это.
Если 45 < 12 И также testFunction(3) = 81 Тогда 'Добавить код для продолжения выполнения.Конец, если
В предыдущем примере оператор оценивает левое выражение, 45 < 12
. Поскольку левое выражение оценивается как False
, все логическое выражение должно оцениваться как False
. Таким образом, выполнение программы пропускает выполнение кода в блоке If
без оценки правильного выражения, testFunction(3)
. В этом примере не вызывается testFunction()
, поскольку левое выражение искажает все выражение.
Аналогично, если левое выражение в логическом выражении с использованием OrElse
оценивается как True
, выполнение переходит к следующей строке кода без вычисления правильного выражения, поскольку левое выражение уже проверило все выражение.
Сравнение с операторами без короткого замыкания
Напротив, обе стороны логического оператора оцениваются, когда используются логические операторы И
и Или
. Следующий пример иллюстрирует это.