Site Loader

Содержание

Проект «логика для чайников». Параграф 26.

Простейшие логические операции

Простейшие логические операции относятся к двузначной логике. Их 4 штуки: “НЕ”, “И”, “ИЛИ”, “XOR”. Также для обозначения этих операций используют разные значки (“~”, “&” и т.п.).

При записи логических формул вместо слов “истина” и “ложь” обычно используют стандартные международные обозначения:
Вместо “истина” пишут: true, T, t, 1.
Вместо “ложь” пишут: false, F, f, 0.

“НЕ”

Операция “НЕ” преобразует истину в ложь, а ложь в истину:

НЕ true = false
НЕ false = true

У этой операции бывают разные другие названия: “логическое НЕ”, “отрицание”, “логическое отрицание”, “инверсия”, “логическая инверсия”. Для международных обозначений вместо “НЕ” пишут “NOT”.

В естественном языке этой операции соответствует добавление слов “неправда, что…” в начале высказывания. Например:

“Сурков должен мне денег”. (1)

Применение операции “НЕ” к высказыванию (1):

“Неправда, что Сурков должен мне денег”. (2)

Если высказывание (1) ложно, то высказывание (2) истинно. Если высказывание (2) ложно, то высказывание (1) истинно.

Нетрудно понять, что двойное применение “НЕ” возвращает нас к прежней истинности.

“Неправда, что неправда, что Сурков должен мне денег”. (3)

Истинность высказывания (3) всегда совпадает с истинностью высказывания (1).

“И”

Операция “И” применяется к двум высказываниям. Ее результат “истина”, только если оба высказывания истинны (а иначе “ложь”):

false И false = false
false И true = false
true И false = false
true И true = true

У этой операции бывают разные другие названия: “логическое И”, “конъюнкция”, “логическое умножение”. Для международных обозначений вместо “И” пишут “AND”.

В естественном языке этой операции соответствует вставка союза “и” между высказываниями. Например:

“Сурков должен мне денег”. (1)
“Петров должен мне денег”. (2)

Применение операции “И” к высказываниям (1) и (2):

“Сурков должен мне денег, и Петров должен мне денег”. (3)

Эту фразу можно сократить, сохранив прежний смысл:

“Сурков и Петров должны мне денег”. (3)

Высказывание (3) истинно только тогда, когда истинны оба высказывания: (1) и (2). Если хотя бы одно из них ложно, то результат тоже ложен. Если оба ложны – тоже.

То есть, если Петров мне денег не задолжал, а задолжал только Сурков, тогда высказывание (3) не будет “полуправдой” или “полуложью”, а будет просто ложью.

“ИЛИ”

Операция “ИЛИ” применяется к двум высказываниям. Ее результат “истина”, если хотя бы одно высказывание истинно (а иначе “ложь”):

false ИЛИ false = false
false ИЛИ true = true
true ИЛИ false = true
true ИЛИ true = true

У этой операции бывают разные другие названия: “логическое ИЛИ”, “включающее ИЛИ”, “дизъюнкция”, “логическое сложение”. Для международных обозначений вместо “ИЛИ” пишут “OR”.
В естественном языке этой операции соответствует вставка союза “или” между высказываниями, но… не всегда (см. ниже об операции “XOR”). Например:

“Я хочу попить”. (1)
“Я хочу поесть”. (2)

Применение операции “ИЛИ” к высказываниям (1) и (2):

“Я хочу попить, или я хочу поесть”. (3)

По-русски звучит правильно, но коряво, и эту фразу можно сократить, сохранив прежний смысл:

“Я хочу попить или поесть ”. (3)

Высказывание (3) истинно тогда, когда истинно хотя бы одно из высказываний (1) и (2), а можно оба. Если оба высказывания ложны, то результат тоже ложен.

То есть, если я хочу есть, но не пить, тогда высказывание (3) истинно. Если я не прочь и поесть, и попить, выказывание (3) тоже истинно. Ложно оно тогда, когдя я не хочу ни того, ни другого.

“XOR”

Операция “XOR” применяется к двум высказываниям. Ее результат “истина”, если ровно одно из высказываний истинно (а иначе “ложь”):

false XOR false = false
false XOR true = true
true XOR false = true
true XOR true = false

У этой операции бывают разные другие названия: “исключающее ИЛИ”, “сложение по модулю 2”, “логическое сложение по модулю 2”. “XOR” – это международное обозначение, общепринятого “русского” аналога нет.

В естественном языке этой операции соответствует вставка союза “или” между высказываниями – так же, как в случае с операцией “ИЛИ”. Например:

“Я собираюсь просить прибавки к зарплате”. (1)
“Я попытаюсь сэкономить ”. (2)

Применение операции “XOR” к высказываниям (1) и (2):

“Я собираюсь просить прибавки к зарплате или я попытаюсь сэкономить”. (3)

Сокращенно:

“Я собираюсь просить прибавки к зарплате или попытаюсь сэкономить”. (3)

Высказывание (3) истинно тогда, когда истинно ровно одно из высказываний (1) и (2). Если я не собираюсь ни просить прибавки, ни экономить, тогда фраза ложна. Также, я имел в виду, что не собираюсь делать и то, и другое одновременно.

Обратите внимание на разницу между операциями “ИЛИ” и “XOR”. Она заключается только в последнем правиле:

true ИЛИ true = true
true XOR true = false

В естественном языке обе операции изображаются одним и тем же союзом “или”. Это – пример неоднозначности естественного языка. Если помните, омонимы и многозначные слова могут иметь больше одного значения. Союз “или” именно такой: он имеет два возможных значения. Первое выражается логической операцией “ИЛИ”, второе – логической операцией “XOR”.

В английском языке существуют те же проблемы: союз “or” имеет те же два значения. А вот древним римлянам было проще, так как в латыни есть два разных слова: “vel” (операция “ИЛИ”) и “aut” (операция “XOR”).

Поскольку разница между операциями “ИЛИ” и “XOR” невелика (всего одно последнее правило), то иногда эта разница не имеет значения. Иногда о том, что имеется в виду, можно догадаться по интонации, или по контексту. Иногда определить точный смысл так и не удается.

1.3.9-1.3.11 Операции (поразрядные, логические, последовательного вычисления)

Содержание
Возврат к предыдущей части 1.3.8 Операции сдвига

К поразрядным операциям относятся:

  • Операция поразрядного логического «И» (&), операция поразрядного логического «ИЛИ» (|), операция поразрядного «исключающего ИЛИ» (^). j; /* r=0x4500 = 0100 0101 0000 0000 */ r = i|j; /* r=0x45FF = 0100 0101 0000 0000 */ r = i&j /* r=0x00FF = 0000 0000 1111 1111 */

    1.3.10. Логические операции
    К логическим операциям относятся операция логического И (&&) и операция логического ИЛИ (||). Операнды логических операций могут быть целого типа, плавающего типа или типа указателя, при этом в каждой операции могут участвовать операнды различных типов.

    Операнды логических выражений вычисляются слева направо. Если значения первого операнда достаточно, чтобы определить результат операции, то второй операнд не вычисляется.

    Логические операции не вызывают стандартных арифметических преобразований. Они оценивают каждый операнд с точки зрения его эквивалентности нулю. Результатом логической операции является 0 или 1, тип результата int.

    Операция логического И (&&) вырабатывает значение 1, если оба операнда имеют нулевые значения. Если один из операндов равен 0, то результат также равен 0.

    Если значение первого операнда равно 0, то второй операнд не вычисляется.

    Операция логического ИЛИ (||) выполняет над операндами операцию включающего ИЛИ. Она вырабатывает значение 0, если оба операнда имеют значение 0, если какой-либо из операндов имеет ненулевое значение, то результат операции равен 1. Если первый операнд имеет ненулевое значение, то второй операнд не вычисляется.

    1.3.11. Операция последовательного вычисления
    Операция последовательного вычисления обозначается запятой (,) и используется для вычисления двух и более выражений там, где по синтаксису допустимо только одно выражение. Эта операция вычисляет два операнда слева направо. При выполнении операции последовательного вычисления, преобразование типов не производится. Операнды могут быть любых типов. Результат операции имеет значения и тип второго операнда. Отметим, что запятая может использоваться также как символ разделитель, поэтому необходимо по контексту различать, запятую, используемую в качестве разделителя или знака операции.

    Читать далее. Раздел 1.3.12. Условная операция
    Содержание

    Логические И и ИЛИ. Краткое введение в программирование на Bash

    Логические И и ИЛИ

    Вы уже видели, что такое управляющие структуры и как их использовать. Для решения тех же задач есть еще два способа. Это логическое И — «&&» и логическое «ИЛИ» — « || ». Логическое И используется следующим образом:

    выражение_1&&выражение_2

    Сначала выполняется выражение, стоящее слева, если оно истинно, выполняется выражение, стоящее справа. Если выражение_1 возвращает ЛОЖЬ, то выражение_2 не будет выполнено. Если оба выражения возвращают ИСТИНУ, выполняется следующий набор команд. Если какое-либо из выражений не истинно, приведенное выражение считает ложным в целом. Другими словами, все работает так:

    если выражение_1 истинно И выражение_2 истинно, тогда выполнять…[15]

    Пример использования:

    #!/bin/bash

    x=5

    y=10

    if [ «$x» -eq 5 ] && [ «$y» -eq 10 ]; then

    echo «Оба условия верны»

    else

    echo «Условия не верны»

    fi

    Здесь мы находим, что переменные х и у содержат именно те значения, которые мы проверяем, поэтому проверяемые условия верны. Если вы измените значение с х = 5 на х = 12, а затем снова запустите программу, она выдаст фразу «Условия не верны».

    Логическое ИЛИ используется аналогичным образом. Разница лишь в том, что оно проверяет ошибочность выражения слева. Если это так — оно начинает выполнять следующий оператор:

    выражение_1||выражение_2

    Данное выражение в псевдокоде выглядит так:

    если выражение_1 истинно ИЛИ выражение_2 истинно, выполняем …

    Таким образом, любой последующий код будет выполняться, если хотя бы одно из выражений истинно:

    #!/bin/bash

    x=3

    y=2

    if [ «$x» -eq 5 ] || [ «$y» -eq 2 ]; then

    echo «Одно из условий истинно»

    else

    echo «Ни одно из условий не является истинным»

    fi

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

    Аналогичная реализация условия с помощью оператора if будет большего размера, чем вариант с использованием логического И и ИЛИ, поскольку потребует дополнительного вложенного if. Ниже приведен код, реализующий тот же функционал, но с использованием оператора if:

    #!/bin/bash

    x=5

    y=10

    if [ «$x» -eq 5 ]; then

    if [ «$y» -eq 10 ]; then

    echo «Оба условия верны»

    else

    echo «Оба условия неверны»

    fi

    fi

    Приведенный код менее нагляден для чтения и требует для своего написания больших усилий. Но у вас остается возможность для избавления себя от всех этих трудностей путем использования операторов логических И и ИЛИ.

    Микроконтроллеры и логические операции

    Доброго дня уважаемые радиолюбители!
    Приветствую вас на сайте “Радиолюбитель“

    Логические операции и их применение

    В нашей жизни бывают случаи когда нет необходимости вникать в глубину того, или иного вопроса, достаточно и его поверхностного понимания. Иногда это связано с нашим «нежеланием», в другом случае сложностью этого вопроса. Так и сейчас, изучая логические операции, мы не будем лезть в глубину, а просто смиримся с тем фактом, что они существуют и знать их надо.

    Основа всего – слово «логика».
    Логика (др.-греч. λογική) — «наука о правильном мышлении», «искусство рассуждения» (от λόγος — «речь», «рассуждение», «мысль»).
    Как видите, логика это не просто древнегреческое слово, а целая наука, изучение которой позволяет нам правильно и здраво рассуждать, и, соответственно, делать правильные выводы из наших рассуждений, чего, однако, очень не хватает в нашем современном мире.
    Рассуждая о чем-либо, мы, на основе логических заключений, делаем соответствующие выводы. К примеру, думая о своем товарище, на основе каких-то фактах, характеризующих его, мы можем сделать вывод – друг он нам, или нет (или: «и не друг, и не враг, – а так»).



    В конце 19 века, группа лиц, под названием «математики», решила перевести весь наш мыслительный процесс в более понятную для них форму – математическую. И из простой, человеческой логики, появилась математическая или – символическая логика. То есть, по их разумению, найти истину можно не только путем шевеления «серым веществом», но и применением математических методов. В чем суть этого метода. Любая высказанная нами мысль основывается на каких то фактах – кирпичиках, составляющих ее основу. Так вот, в математической логике эти «кирпичики» имеют только два состояния –
    «ложь»
    или «истина». По идее, и в человеческой логике должно быть также. Но на то мы и «человеки».
    1+1 равно 2 – истинна, 1+1 не равно 2 – ложь. Все просто и понятно. Но это только в математической логике, а у людей 1+1 может равняться и 3. Так вот, из этих «кирпичиков», а у математиков они называются – «простые выражения», которые могут быть только или «истинной», или «ложью», складываются «сложные выражения», которые, естественно, тоже могут быть только или «истинными» или «ложными».
    А весь этот процесс получения сложного выражения из простых можно описать «логической формулой» или, как еще говорят, – «логическим выражением».
    И вот тут мы подошли к главному – к логическим операциям:
    Логическое выражение – это символическая запись высказывания, состоящая из логических величин, объединенных логическими операциями. Логические величины – это или «1», или «0». Если выражение «истинно» – то его величина 1, если «ложно» – то его величина 0 (так уж принято).
    Логические операции позволяют складывать, а точнее – связывать, между собой простые выражения (те самые «кирпичики») – логические величины.
    К примеру, перефразируя Уильяма, нашего, Шекспира, возьмем вот такое предложение:
    «Изучим или не изучим (микроконтроллер), вот в чем вопрос».
    Слово «изучим» обозначим как «А», «не изучим» – как «В» и посмотрим как это предложение может выглядеть в символьной записи с использование логической операции:
    А or В = ?

    Точно также происходит запись логических операций при создании программы. Каждый “язык” программирования имеет соответствующий набор символьных команд, с помощью которых происходит запись логических операций в программе.

    Ну а теперь я постараюсь ответить на вопрос – «Зачем нам, простым смертным, далеким от этих философских и математических понятий, это нужно».

    Во-первых. Лишними любые знания никогда не бывают. Познавая новое, мы открываем для себя что-то неизвестное, расширяем свой кругозор, пополняем свой скудный словарный запас (что позволяет более внятно излагать свою мысль, а не прибегать через слово к нецензурным связкам для ее озвучивания), а самое главное – учимся мыслить другими, более высокими категориями, тем самым отдаляя себя от «прародителей» – обезьян.
    Во-вторых. Труд математиков не пропал даром и не остался только теорией.
    Все современные цифровые технологии основываются на логических операциях, без них никуда не деться. Почти все (а может даже и все) цифровые микросхемы в своей работе используют логические схемы (выполняют логические операции, в том числе и микроконтроллер).
    Теперь конкретно для нас, изучающих микроконтроллеры и их программирование:
    1. Создавая программу, мы прописываем все действия микроконтроллера основываясь на своей логике с применением логических операций, иногда даже и не подозревая об этом (теперь-то, мы не только «не подозреваем»), которые применяем к логическим выражениям.
    Пример – «если в ходе выполнения программы получен такой результат, то дальше программа пойдет вот таким путем, а если мы получили другой результат, то программа дальше пойдет вот этим путем» – типичное выполнение логической операции.
    2. В программировании логическая операция применяется не только к логическому выражению (смотри п.1), но и для операций с двоичными числами, так называемые «логические побитовые (битовые) операции», которые очень сильно облегчают тяжелую жизнь программиста (этот пункт мы детально рассмотрим при изучении команд микроконтроллера).
    3. Нельзя создать конструкцию только на одном микроконтроллере. Она будет бессмысленна. Помимо самого микроконтроллера в схеме должна быть его «обвязка», – резисторы, конденсаторы, диоды, транзисторы, индикаторы, реле и т.д. Очень часто в схемах на микроконтроллерах применяются цифровые микросхемы, в основе работы которых лежит принцип логических операций. Знание логических операций и грамотное применение таких микросхем совместно с микроконтроллером, позволяет создавать более простые и эффективные радиолюбительские конструкции.

    Существует три основных логических операции при помощи которых можно записать любое логическое выражение (вот тут, надо сосредоточиться):

    1. Инверсия
    2. Конъюнкция
    3. Дизъюнкция

    Конъюнкция, оно же «Логическое И», оно же «Логическое умножение».
    Мы выбираем название «Логическое И» – оно чаще встречается в программировании.
    Допустим, у нас есть два простых выражения – А и В. Эти выражения могут иметь значения или 1 (истина), или 0 (ложь). При выполнении операции «Логическое И» мы получим сложное выражение которое примет значение 1 (истина) только в том случае если и А, и В имеют значение 1 (истина), во всех других случаях результат будет 0 (ложь).
    Операция «Логическое И» имеет обозначения (в языках программирования): И, &&, AND, &.
    Посмотрите на таблицу (такие таблицы называются «таблицы истинности»):
    А    В   А&В
    1     1      1
    0    0      0
    1     0     0
    0     1     0
    Как видите, результат будет «истинной», равным 1, если только и А, и В будут равны 1 (истинны).
    К примеру, прописывая алгоритм работы программы, мы можем эту операцию «озвучить» так: «Если в ходе выполнения программы результаты А и В «истинны», то дальше выполняем это, если результаты А и В, оба, или один из них – «ложь», то дальше выполняем вот это».
    А третье название операции – «Логическое умножение» (не путайте с арифметическим умножением) применяется для двоичных чисел.

    Дизъюнкция, оно же «Логическое ИЛИ», оно же «Логическое сложение».
    Мы выбираем название «Логическое ИЛИ». Кстати, если логически подумать, то можно и догадаться какие результаты будут при выполнении этой операции.
    В «Логическом И» результат равен 1, если и А, и В, равны 1, а в «Логическом ИЛИ» результат будет равен 1, если или А, или В, равны единице.
    Операция «Логическое ИЛИ» имеет обозначения: ИЛИ, ||, OR, |.
    Посмотрим таблицу истинности:
    А    В    А||В
    1     1       1
    0    0       0
    1     0       1
    0     1       1
    А «Логическое сложение» применяется ….. Я думаю вы догадались где.

    Инверсия, оно же «Логическое НЕ», оно же «Отрицание».
    Мы выбираем название «Логическое НЕ».
    Операция «Логическое НЕ» имеет обозначения: НЕ, !, NOT.
    Тут вообще все просто:
    Если А=1 (истина), то после выполнения операции «Отрицание» А примет значение 0, то есть становится ложным. И наоборот. .
    Таблица истинности
    А    В    АxorВ
    1     1        0
    0    0        0
    1     0        1
    0     1        1
    В этом случае, при выполнении операции «Исключающее ИЛИ», результат будет истинен (равен 1), если А не равно В.  В остальных случаях результат будет равен 0 (ложный).

    Как я уже говорил, логические операции применяются не только к выражениям, но и к двоичным числам – так называемые логические побитовые (битовые) операции. А повторяюсь я только потому, что в некоторых языках программирования логические операции с выражениями, и логические битовые операции имеют одинаковое написание, и если вы будете пользоваться таким языком, то этот момент надо всегда держать в памяти, чтобы не допустить ошибок.

    Также мы уяснили, что логические операции – основа цифровой техники. Даже цифровые микросхемы, которые предназначены только для выполнения логических операций, называют – «логические микросхемы», или еще проще – «логика».
    Немного остановимся на микросхемах логики и мы.
    Работы цифровых микросхем логики основана на выполнение трех основных логических операций, с которыми мы ознакомились выше. Сочетание этих логических операций позволило создать великое (ну, может и не совсем великое) множество цифровых микросхем логики.
    Основа таких микросхем – логический элемент:
    Логические элементы — устройства, предназначенные для обработки информации в цифровой форме.
    Логические элементы выполняют логическую функцию (операцию) над входными сигналами (операндами, данными).

    1. Логический элемент выполняющий операцию «Логическое И»:
    Логический элемент, реализующий функцию конъюнкции («Логическое И»), называется схемой совпадения. Мнемоническое правило для конъюнкции с любым количеством входов звучит так: На выходе будет:
    – «1» тогда и только тогда, когда на всех входах действуют «1»,
    – «0» тогда и только тогда, когда хотя бы на одном входе действует «0»


    2. Логический элемент, реализующий функцию «Логическое ИЛИ»:
    Мнемоническое правило для дизъюнкции с любым количеством входов звучит так: На выходе будет:
    – «1» тогда и только тогда, когда хотя бы на одном входе действует «1»,
    – «0» тогда и только тогда, когда на всех входах действуют «0»


    3. Логический элемент, реализующий функцию «Логическое НЕ»:
    Мнемоническое правило для отрицания звучит так: На выходе будет:
    – «1» тогда и только тогда, когда на входе «0»,
    – «0» тогда и только тогда, когда на входе «1»


    Это основные логические элементы.
    А вот примеры комбинации основных логических операций:

    1. Логический элемент, реализующий функцию «Исключающее ИЛИ» (неравнозначность):
    Мнемоническое правило для суммы по модулю 2 с любым количеством входов звучит так: На выходе будет:
    – «1» тогда и только тогда, когда на входе действует нечётное количество,
    – «0» тогда и только тогда, когда на входе действует чётное количество
    Словесное описание: “истина на выходе – только при истине на входе 1, либо только при истине на входе 2″.


    2. Логический элемент, реализующий функцию «Логическое ИЛИ-НЕ» (инверсия функции дизъюнкции):
    Мнемоническое правило для ИЛИ-НЕ с любым количеством входов звучит так: На выходе будет:
    – «1» тогда и только тогда, когда на всех входах действуют «0»,
    – «0» тогда и только тогда, когда хотя бы на одном входе действует «1»


    3. Логический элемент, реализующий функцию «Логическое И-НЕ»:
    Мнемоническое правило для И-НЕ с любым количеством входов звучит так: На выходе будет:
    – «1» тогда и только тогда, когда хотя бы на одном входе действует «0»,
    – «0» тогда и только тогда, когда на всех входах действуют «1»

    Кроме таких комбинаций логических операций существует еще много других.

    Практический пример использования микросхем логики.
    Допустим, собираем охранную сигнализацию для дома. У нас имеется четыре датчика (на дверь и три окна). При срабатывании любого из них должен срабатывать звуковой сигнал.
    Без применения дополнительных микросхем нам придется подключить эти четыре датчика к четырем входам микроконтроллера. Затем, программным путем, проверять каждый из четырех входов на наличие сигнала срабатывания датчика. При использовании микросхемы логики, выполняющую «Логическую операцию ИЛИ» и имеющую четыре входа, к примеру К561ЛЕ6 (в данной микросхеме имеется 3 логических четырехвходовых элементов, реализующих логическую функцию «ИЛИ-НЕ»), мы можем подключить датчики к входам одного элемента микросхемы, а единственный его выход подключить к одному входу микроконтроллера. Теперь, при срабатывании любого датчика на выходе микросхемы сформируется сигнал срабатывания, который подастся на вход микроконтроллера. Наш выигрыш:
    – задействован всего один вход микроконтроллера (вместо четырех)
    – уменьшается объем программы (вместо опроса четырех входов, нам надо контролировать только один вход микроконтроллера).

    Кстати, есть еще одна разновидность логики – женская логика. Весьма интересная штука. Но так как она к сегодняшней теме не относится, то придется, к сожалению, этот вопрос опустить.


    Предыдущие статьи:

    ♦ Микроконтроллер и как его победить
    ♦ Микроконтроллер и системы счисления

    Следующие статьи:

    ♦ Общее устройство микроконтроллера
    ♦ Арифметико-логическое устройство и организация памяти – память программ, память данных, энергонезависимая память
    ♦ Регистры общего назначения, регистры ввода/вывода, стек, счетчик команд
    ♦ Регистр состояния SREG
    ♦ Порты ввода/вывода микроконтроллера



    5.

    7 – Логические операторы

    Добавлено 8 мая 2021 в 18:37

    Сохранить или поделиться

    Хотя операторы отношения (сравнения) могут использоваться для проверки того, является ли конкретное условие истинным или ложным, они могут проверять только одно условие за раз. Но часто нам нужно знать, выполняются ли одновременно несколько условий. Например, чтобы проверить, выиграли ли мы в лотерею, мы должны сравнить, все ли выбранные нами числа совпадают с выигрышными числами. В лотерее с 6 числами это будет включать 6 сравнений, и все они должны быть верными. В других случаях нам нужно знать, выполняется ли какое-либо из нескольких условий. Например, мы можем решить пропустить работу сегодня, если мы заболели, или если мы слишком устали, или если мы выиграли в лотерею в нашем предыдущем примере. Это потребует проверки того, верно ли какое-либо из трех сравнений.

    Возможность тестирования несколько условий нам дают логические операторы.

    В C++ есть 3 логических оператора:

    Логические операторы
    ОператорОбозначениеПример использованияОперация
    Логическое НЕ (NOT)!!xtrue, если x равен false; или false, если x равен true
    Логическое И (AND)&&x && ytrue, если и xy равны true; в противном случае – false
    Логическое ИЛИ (OR)||x || ytrue, если x или y равен true; в противном случае – false

    Логическое НЕ (NOT)

    Вы уже сталкивались с унарным оператором логического НЕ в уроке «4. 9 – Логические (булевы) значения». Мы можем резюмировать эффекты логического НЕ следующим образом:

    Логическое НЕ (оператор !)
    ОперандРезультат
    truefalse
    falsetrue

    Если операнд логического НЕ вычисляется как true, логическое НЕ вычисляется как false. Если операнд логического НЕ вычисляется как false, логическое НЕ вычисляется как true. Другими словами, логическое НЕ меняет логическое значение с true на false и наоборот.

    Логическое НЕ часто используется в условных выражениях:

    bool tooLarge { x > 100 }; // tooLarge равно true, если x > 100
    if (!tooLarge)
        // делаем что-нибудь с x
    else
        // выводим ошибку

    Следует остерегаться того, что логическое НЕ имеет очень высокий уровень приоритета. Начинающие программисты часто делают следующую ошибку:

    #include <iostream>
     
    int main()
    {
        int x{ 5 };
        int y{ 7 };
     
        if (!x > y)
            std::cout << x << " is not greater than " << y << '\n';
        else
            std::cout << x << " is greater than " << y << '\n';
     
        return 0;
    }

    Эта программа напечатает:

    5 is greater than 7

    Но x не больше y, так как же это возможно? Ответ заключается в том, что поскольку оператор логического НЕ имеет более высокий приоритет, чем оператор «больше чем», выражение !x > y фактически вычисляется как (!x) > y. Поскольку x равно 5, !x вычисляется как 0, а 0 > y равно false, поэтому выполняется инструкция else!

    Правильный способ написать приведенный выше фрагмент:

    #include <iostream>
     
    int main()
    {
        int x{ 5 };
        int y{ 7 };
     
        if (!(x > y))
            std::cout << x << " is not greater than " << y << '\n';
        else
            std::cout << x << " is greater than " << y << '\n';
     
        return 0;
    }

    Таким образом, сначала будет вычислено x > y, а затем логическое НЕ инвертирует логический результат.

    Лучшая практика


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

    Простое использование логического НЕ, например if (!value), не требует скобок, потому что приоритет здесь не играет роли.

    Логическое ИЛИ (OR)

    Оператор логического ИЛИ используется для проверки того, выполняется ли одно из двух условий. Если значение левого операнда истинно, или значение правого операнда истинно, или оба значения истинны, то логический оператор ИЛИ возвращает true. В противном случае он вернет false.

    Логическое ИЛИ (оператор ||)
    Левый операндПравый операндРезультат
    falsefalsefalse
    falsetruetrue
    truefalsetrue
    truetruetrue

    Например, рассмотрим следующую программу:

    #include <iostream>
     
    int main()
    {
        std::cout << "Enter a number: ";
        int value {};
        std::cin >> value;
     
        if (value == 0 || value == 1)
            std::cout << "You picked 0 or 1\n";
        else
            std::cout << "You did not pick 0 or 1\n";
        return 0;
    }

    В этом случае мы используем логический оператор ИЛИ, чтобы проверить, истинно ли левое условие (value == 0) или правое условие (value == 1). Если одно из них (или оба) истинны, логический оператор ИЛИ принимает значение true, что означает выполнение инструкции if. Если ни одно из них не является истинным, результат логического оператора ИЛИ будет false, что означает выполнение инструкции else.

    Вы можете связать вместе множество операторов логического ИЛИ:

    if (value == 0 || value == 1 || value == 2 || value == 3)
         std::cout << "You picked 0, 1, 2, or 3\n";

    Начинающие программисты иногда путают оператор логическое ИЛИ (||) с оператором побитовое ИЛИ (|) (который будет рассмотрен позже). Несмотря на то, что у них обоих в названии есть «ИЛИ», они выполняют разные функции. Их смешивание, вероятно, приведет к неверным результатам.

    Логическое И (AND)

    Логический оператор И используется для проверки истинности обоих операндов. Если оба операнда равны true, логическое И возвращает true. В противном случае возвращается false.

    Логическое И (оператор &&)
    Левый операндПравый операндРезультат
    falsefalsefalse
    falsetruefalse
    truefalsefalse
    truetruetrue

    Например, нам может потребоваться узнать, находится ли значение переменной x в диапазоне от 10 до 20. На самом деле это два условия: нам нужно знать, больше ли x, чем 10, а также меньше ли x, чем 20.

    #include <iostream>
     
    int main()
    {
        std::cout << "Enter a number: ";
        int value {};
        std::cin >> value;
     
        if (value > 10 && value < 20)
            std::cout << "Your value is between 10 and 20\n";
        else
            std::cout << "Your value is not between 10 and 20\n";
        return 0;
    }

    В этом случае мы используем оператор логическое И, чтобы проверить, истинны ли левое условие (value > 10) и правое условие (value < 20). Если оба условия истинны, оператор логическое И принимает значение true, и выполняется инструкция if. Если ни одно из условий или хотя бы одно из них не соответствует истине, оператор логическое И принимает значение false, и выполняется инструкция else.

    Как и в случае с логическим ИЛИ, вы можете связать вместе множество операторов логическое И:

    if (value > 10 && value < 20 && value != 16)
        // делаем что-то
    else
        // делаем что-то другое

    Если все эти условия верны, будет выполнена инструкция if. Если какое-либо из этих условий ложно, будет выполняться инструкция else.

    Вычисление по короткой схеме

    Чтобы логическое И возвращало true, оба операнда должны иметь значение true. Если первый операнд вычисляется как false, логическое И знает, что оно должно возвращать false, независимо от того, вычисляется ли второй операнд как true или false. В этом случае оператор логическое И немедленно вернет false, даже не вычисляя второй операнд! Это известно как вычисление по короткой схеме и выполняется в основном в целях оптимизации.

    Точно так же, если первый операнд для логического ИЛИ равен true, тогда всё условие ИЛИ должно вычисляться как true, и второй операнд не вычисляется.

    Вычисление по короткой схеме дает еще одну возможность показать, почему операторы, вызывающие побочные эффекты, не должны использоваться в составных выражениях. Рассмотрим следующий фрагмент:

    if (x == 1 && ++y == 2)
        // сделать что-то

    Если x не равно 1, всё условие должно быть ложным, поэтому ++y никогда не вычисляется! Таким образом, y будет инкрементироваться только в том случае, если x равен 1, что, вероятно, не совсем то, что задумывал программист!

    Предупреждение


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

    Как и в случае с логическим и побитовым ИЛИ, начинающие программисты иногда путают оператор логическое И (&&) с оператором побитовое И (&).

    Смешивание И и ИЛИ

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

    Многие программисты предполагают, что логическое И и логическое ИЛИ имеют одинаковый приоритет (или забывают, что это не так), точно так же, как сложение/вычитание и умножение/деление. Однако логическое И имеет более высокий приоритет, чем логическое ИЛИ, поэтому операторы логическое И будут вычисляться перед операторами логическое ИЛИ (если они не заключены в скобки).

    Начинающие программисты часто пишут такие выражения, как value1 || value2 && value3. Поскольку логическое И имеет более высокий приоритет, это выражение вычисляется как value1 || (value2 && value3), а не как (value1 || value2) && value3. Надеюсь, это то, чего хотел программист! Если программист предполагал вычисление слева направо (как это происходит со сложением/вычитанием или умножением/делением), он или она получит не тот результат, который не ожидался!

    При смешивании логического И и логического ИЛИ в одном выражении рекомендуется явно заключать в скобки каждый оператор и его операнды. Это помогает предотвратить ошибки приоритета, упрощает чтение кода и четко определяет, как вы рассчитывали вычислять выражение. Например, вместо записи value1 && value2 || value3 && value4, лучше написать (value1 && value2) || (value3 && value4).

    Лучшая практика


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

    Закон де Моргана

    Многие программисты также ошибаются, полагая, что !(x && y) – это то же самое, что !x && !y. К сожалению, так нельзя «распределять» логическое НЕ.

    Закон де Моргана говорит нам, как логическое НЕ должно распределяться в этих случаях:

    !(x && y) эквивалентно !x || !y
    !(x || y) эквивалентно !x && !y

    Другими словами, когда вы распределяете логическое НЕ, вам также необходимо преобразовать логическое И в логическое ИЛИ, и наоборот!

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

    Где логический оператор исключающее ИЛИ (XOR)?

    Логический оператор исключающее ИЛИ (XOR) – это логический оператор, представленный на некоторых языках, который используется для проверки истинности нечетного числа условий.

    Логическое исключающее ИЛИ
    Левый операндПравый операндРезультат
    falsefalsefalse
    falsetruetrue
    truefalsetrue
    truetruefalse

    В C++ нет оператора логическое исключающее ИЛИ. В отличие от логического ИЛИ или логического И, логическое исключающее ИЛИ не может быть вычислено по короткой схеме. По этой причине создание оператора логическое исключающее ИЛИ из операторов логического ИЛИ и логического И является сложной задачей. Однако вы можете легко имитировать логическое исключающее ИЛИ (XOR), используя оператор неравенства (!=):

    if (a != b) ... // a XOR b, предполагая, что a и b - логические значения

    Это выражение можно расширить до нескольких операндов следующим образом:

    if (a != b != c != d) ... // a XOR b XOR c XOR d, предполагая, что a, b, c и d 
                              // являются логическими значениями
    

    Обратите внимание, что приведенные выше шаблоны логического исключающего ИЛИ работают только в том случае, если операнды являются логического типа (не целочисленными значениями). Если вам нужна форма логического исключающего ИЛИ, которая работает с не-логическими операндами, вы можете использовать static_cast для преобразования их в bool:

    // a XOR b XOR c XOR d, для любого типа, который можно преобразовать в bool
    if (static_cast<bool>(a) != static_cast<bool>(b) != static_cast<bool>(c) != static_cast<bool>(d)) ...

    Небольшой тест

    Вопрос 1

    Вычислите следующие выражения.

    Примечание: в ответах мы «объясняем нашу работу», показывая вам шаги, предпринятые для получения окончательного ответа. Шаги разделены символом →. Выражения, которые были проигнорированы из-за правила вычисления по короткой схеме, помещены в квадратные скобки. Например,

    (1 < 2 || 3 != 3) →
    (true || [3 != 3]) →
    (true) →
    true

    означает, что мы вычислили (1 <2 || 3 != 3), чтобы прийти к (true || [3 != 3]), и вычислили его, чтобы прийти к true. 3 != 3 никогда не выполнялся из-за вычисления по короткой схеме.

    a) (true && true) || false

    Ответ

    (true && true) || false →
    true || [false] →
    true

    b) (false && true) || true

    Ответ

    (false && [true]) || true →
    false || true →
    true

    Вычисление по короткой схеме имеет место быть, если первый операнд || равен true.

    c) (false && true) || false || true

    Ответ

    (false && [true]) || false || true →
    false || false || true →
    false || true →
    true

    d) (5 > 6 || 4 > 3) && (7 > 8)

    Ответ

    (5 > 6 || 4 > 3) && (7 > 8) →
    (false || true) && false →
    true && false →
    false

    e) !(7 > 6 || 3 > 4)

    Ответ

    !(7 > 6 || 3 > 4) →
    !(true || [3 > 4]) →
    !true →
    false

    Оригинал статьи:

    Теги

    C++ / CppLearnCppДля начинающихЛогические операторЛогические типы даныхЛогическое И (AND)Логическое ИЛИ (OR)Логическое исключающее ИЛИ (XOR)Логическое НЕ (NOT)ОбучениеОператор (программирование)Программирование

    Сохранить или поделиться

    Булев оператор XOr—Справка | ArcGIS Desktop

    Доступно с лицензией Spatial Analyst.

    Краткая информация

    Выполняет Булеву операцию исключающего Или (XOr) для значений ячеек двух входных растров.

    Если одно входное значение истинно (ненулевое), а другое – ложное (нулевое), выходное значение – 1. Если оба входных значения истинны или оба ложны, выходное значение – 0.

    Более подробно о Булевых математических инструментах

    Иллюстрация

    OutRas = BooleanXOr(InRas1, InRas2)

    Использование

    • Булевы математические инструменты интерпретируют входные данные как логические значения, когда ненулевые значения рассматриваются как истинные, а нулевые значения – как ложные.

    • Для выполнения Булевой операции необходимо наличие двух входных файлов.

    • Порядок входных данных не имеет значения для этого инструмента.

    • Если входными данными служат значения с плавающей точкой, они преобразуются в целые числа 0 или 1 до выполнения логической операции.» (ссылка).

    • См. раздел Параметры среды анализа и Spatial Analyst для получения дополнительной информации о среде геообработки данного инструмента.

    Синтаксис

    BooleanXOr (in_raster_or_constant1, in_raster_or_constant2)

    Возвращаемое значение

    Пример кода

    Булев оператор XOr. Пример 1 (окно Python)

    В этом примере выполняется Булева операция XOr (Исключающее Или) на двух растрах GRID, и выводится растр TIFF.

    import arcpy
    from arcpy import env
    from arcpy.sa import *
    env.workspace = "C:/sapyexamples/data"
    outBooleanXOr = BooleanXOr("degs", "negs")
    outBooleanXOr.save("C:/sapyexamples/output/outboolxor.tif")
    
    Булев оператор XOr. Пример 2 (автономный скрипт)

    В этом примере выполняется Булева операция XOr (Исключающее или) на двух растрах GRID.

    # Name: BooleanXOr_Ex_02.py
    # Description: Performs a Boolean Exclusive Or operation on the
    #              cell values of two input rasters
    # Requirements: Spatial Analyst Extension
    
    # Import system modules
    import arcpy
    from arcpy import env
    from arcpy.sa import *
    
    # Set environment settings
    env.workspace = "C:/sapyexamples/data"
    
    # Set local variables
    inRaster1 = "degs"
    inRaster2 = "negs"
    
    # Check out the ArcGIS Spatial Analyst extension license
    arcpy.CheckOutExtension("Spatial")
    
    # Execute BooleanXOr
    outBooleanXOr = BooleanXOr(inRaster1, inRaster2)
    
    # Save the output 
    outBooleanXOr.save("C:/sapyexamples/output/outboolxor")
    

    Параметры среды

    Информация о лицензиях

    • ArcGIS Desktop Basic: Требует Spatial Analyst
    • ArcGIS Desktop Standard: Требует Spatial Analyst
    • ArcGIS Desktop Advanced: Требует Spatial Analyst

    Связанные разделы

    интересных свойств эксклюзивного ИЛИ (XOR) — машинное обучение и статистика

    Исключающее ИЛИ — иногда также исключающее дизъюнкция (сокращенно: XOR) или антивалентность — это логическая операция, которая выдает истину только в том случае, если только один из ее обоих входов истинен (то есть, если оба входа различаются). Есть много приложений, в которых используется XOR, например, в криптографии, кодах Грея, проверках четности и CRC и, конечно же, во многих других.Обычно этот символ используется для обозначения операции XOR. Здесь мы будем использовать символ для исключающего ИЛИ и для его отрицания, биусловный оператор. В этом сообщении блога мы рассмотрим несколько его интересных свойств, которые могут быть полезны.

    Начнем с таблицы истинности исключающего ИЛИ () и биусловия:

    и б а б а б
    0 0 0 1
    0 1 1 0
    1 0 1 0
    1 1 0 1

    Определение

    Из этой таблицы мы можем извлечь следующие уравнения, которые являются наиболее часто используемым определением операции XOR:

    Обратный элемент

    Обратите внимание, что логическая операция И () записывается как .Обе операции имеют обратный элемент (1 и 0), так что

    Нейтральный элемент

    Для исключающего ИЛИ и биусловия также существует нейтральный элемент (0 и 1):

    Идемпотентность

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

    .

    Инверсия Эксклюзивного ИЛИ

    Мы уже упоминали, что обратным XOR является биусловный оператор.Это также легко увидеть из таблицы истинности. Впрочем, это можно показать и формально:

    с тех пор — используя уравнение. \eqref{экв:определение} :

    Коммутативность

    Коммутативность указана и в том, и в другом случае:

    с

    Ассоциативность

    Также выполняется ассоциативное свойство:

    т.к. – с использованием правил \eqref{eq:definition} и \eqref{eq:inverseXOR}.

    Распределение

    Как мы увидим позже, союз (И) и Исключающее ИЛИ (двуусловное) представляют собой операции умножения и сложения поля Галуа GF(2), и в таком поле они подчиняются дистрибутивному закону:

    т.к. – с уравнением.\eqref{eq:inverseXOR}:

    Это справедливо и для биусловного оператора.

    Инвертирование одного операнда

    т.к. – с уравнением. \eqref{eq:inverseXOR}:

    Инвертирование обоих операндов

    , что можно тривиально показать с помощью \eqref{eq:definition}:

    Выражение логического ИЛИ в терминах исключающего ИЛИ

    Мы можем найти следующее выражение:

    т.к. – путем расширения a и b, с:

    Поскольку приведенное выше уравнение снова содержит дизъюнкцию (ИЛИ), это не выглядит как какое-либо улучшение, однако это правило может быть полезно при выводе многих других соотношений.Например, применим правило \eqref{eq:OR-XOR} к самому себе:

    Давайте сначала определим:

    Тогда имеем (подставляя исходные выражения для и через некоторое время снова):

    Так как условия и дизъюнктны к , приведенное выше выражение упрощается до:

    Это приводит, наконец, к интересному соотношению:

    Выражение логического И через исключающее ИЛИ

    Аналогично предыдущему пункту можно вывести некоторые интересные соотношения для логического И (союза):

    и

    Логическое ИЛИ попарно дизъюнктных термов

    Используя правило \eqref{eq:OR-XOR}, мы можем найти еще одно интересное соотношение для дизъюнктивных форм, где все термины попарно дизъюнктны.Рассмотрим следующий простой пример — применение правила \eqref{eq:OR-XOR}:

    В качестве примечания, мы также можем записать приведенное выше отношение в обратном порядке, так что:

    С Eq.\eqref{eq:xorAbsurdum} у нас есть важное соотношение, которое гласит, что все операции ИЛИ в дизъюнктивной форме можно просто заменить на XOR, если все термины попарно дизъюнктны. Например, правило можно применить к следующей дизъюнктивной форме:

    .

    Новый взгляд на логические двуусловные операторы и исключающее ИЛИ

    Иногда можно заменить все биусловные операции в уравнении исключающим ИЛИ.Рассмотрим следующий пример – с уравнением. \eqref{eq:inverseXOR} и уравнение. \eqref{eq:invOne}:

    Или, короче:

    Комбинированное ассоциативное свойство логического биусловия и исключающего ИЛИ

    Аналогично предыдущему, где мы показывали ассоциативность биусловия и исключающего ИЛИ для обоих случаев по отдельности, мы также можем показать, что ассоциативность также имеет место для смешанных терминов — с уравнением \eqref{eq:inverseXOR}, \ eqref{eq:invOne} и \eqref{eq:BicondEqXOR}:

    Это позволяет нам заявить:

    Комбинированное свойство перестановочности логического бикондиционала и исключающего ИЛИ

    После того, как мы показали объединенное ассоциативное свойство логического биусловия и исключающего ИЛИ, мы соответственно показываем коммутативность.Нам нужно только уравнение \eqref{eq:Commutativity} и \eqref{eq:mixedassociative}. Тогда аргументация довольно тривиальна:

    Подытоживая, мы можем написать:

    Следовательно, все термины в смешанном выражении XOR и бикондиционалов попарно взаимозаменяемы. Это очень важное наблюдение, которое часто может помочь на практике.

    Замена операций исключающее ИЛИ в выражении биусловиями

    Допустим, у нас есть выражение вида

    Мы хотим заменить все операции на .Как мы можем этого добиться? На самом деле, это не так сложно. Мы можем рекурсивно применить правила \eqref{eq:inverseXOR}, \eqref{eq:invOne} и \eqref{eq:mixedassociative} следующим образом:

    Вы видите, к чему это идет: после замены первого XOR у нас было отрицание в выражении, которое снова исчезло после замены второго XOR, а затем вернулось с заменой третьего XOR. Итак, в зависимости от количества переменных у нас либо осталось в конце отрицание, либо нет.Это можно выразить с помощью:

    Точно так же мы получаем следующее соотношение, когда заменяем биусловия в выражении операцией XOR:

    Смешанные представления биусловий и исключающих ИЛИ

    Иногда встречаются смешанные представления биусловий и исключающих ИЛИ, которые не могут быть эффективно реализованы в цифровой схеме. В этих случаях можно найти представления, состоящие исключительно из XOR или только из бикондиционалов.Во-первых, мы должны привести наше исходное представление к виду:

    , где состоит только из операций XOR и только из биусловий. Для символа либо вставляется, если мы хотим, чтобы окончательное отношение состояло из XOR, либо вставляется в противном случае. Обратите внимание, что приведенное выше представление с и может быть легко достигнуто, просто применяя коммутативное свойство из уравнения. \eqref{eq:combinedCommutative} к исходному отношению. Тогда вы почти закончили: вам просто нужно применить \eqref{eq:replaceXOR} к или \eqref{eq:replaceBiconditional} к — в зависимости от того, какой оператор вы предпочитаете — и, наконец, у вас есть хорошее представление, содержащее либо только XOR, либо только биусловия.

    Пример

    Мы заменяем бикондиционал на XOR:

    и подставляем обратно в исходное уравнение:

    Булева алгебра электроники Маркус Тилл

    Логические операторы VBA — ИЛИ, И, XOR, НЕ, ЕСТЬ и ПОДОБНО

    VBA позволяет использовать логические операторы И , Или , Не , Xor для сравнения значений. Операторы считаются «булевыми», что означает, что в результате они возвращают True или False.

    Если вы хотите узнать, как сравнивать строки, щелкните здесь: Сравнение строк VBA — StrComp

    Если вы хотите узнать, как использовать операторы сравнения, щелкните здесь: Операторы сравнения VBA — Not Equal to & More

     

    Использование логического оператора И

    Логический оператор и сравнивает два или более условий. Если все условия истинны, оператор вернет True. Если хотя бы одно из условий не выполняется, оператор вернет False.Вот пример:

    dim Ita inta integer

    тусклые INTB как integer

    Dim Blnresult как Boolean

    INTA = 5

    INTB = 5

    Если INTA = 5 и INTB = 5, затем

    BLNRESULT = TRUE

    Else

        blnResult = False

    End If

     

    В этом примере мы хотим проверить, равны ли intA и intB 5.Если это правда, значение Boolean blnResult будет True, в противном случае — False.

    Сначала мы устанавливаем значения intA и intB равными 5:

    После этого мы используем оператор И в операторе If, чтобы проверить, равны ли значения 5:

    If intA = 5 And intB = 5 Then

        blnResult = True

    Else

        blnResult = False

    End If

    Поскольку обе переменные равны 5, blnResult возвращает True:

    Изображение 1.Использование логического оператора И в VBA

     

    Использование логического оператора Or

    Логический оператор или сравнивает два или более условий. Если хотя бы одно из условий истинно, возвращается True. Если ни одно из условий не выполняется, оператор вернет False. Вот код для примера:

    Dim INTA Как integer

    тусклые INTB как Integer

    Dim Blnresult Как Boolean

    INTA = 5

    INTB = 10

    Если INTA = 5 или INTB = 5, затем

    BLNRRESULT = TRUE

    Else

        blnResult = False

    End If

    В этом примере мы хотим проверить, равны ли оба intA 5.или intB равно 10. Если какое-либо из этих условий истинно, значение Boolean blnResult будет True, в противном случае — False.

    Сначала мы устанавливаем значение intA равным 5 и intB равным 10:

    После этого мы используем оператор или в операторе If, чтобы проверить, равно ли какое-либо из значений 5:

    Если intA = 5 или intB = 5 Then

        blnResult = True

    Else

        blnResult = False

    End If

    Поскольку значение intA равно 5, blnResult возвращает True:

    Изображение 2.Использование логического оператора Or в VBA

     

    Использование нелогического оператора

    Логический оператор Not проверяет одно или несколько условий. Если условия истинны, оператор возвращает False. В противном случае он возвращает True. Вот код для примера:

    Dim INTA Как integer

    Dim Blnresult Как Boolean

    INTA = 5

    , если нет (Inta = 6), то

    BLNRRESULT = TRUE

    ELS

    BLNRRESULT = false

    конец, если

    В этом примере мы хотим проверить, не равно ли значение intA 6.Если intA отличается от 6, значение Boolean blnResult будет True, в противном случае — False.

    Сначала мы устанавливаем значение intA равным 5:

     

    После этого мы используем оператор Not в операторе If, чтобы проверить, отличается ли значение intA от 6:

    If Not (intA = 6) Then

        blnResult = True

    Else

        blnResult = False

    End If

    Поскольку значение intA равно 5, blnResult возвращает True:

    Изображение 3.Использование нелогического оператора в VBA

     

    Использование логического оператора Xor

    Логический оператор Xor сравнивает два или более условий. Если ровно одно из условий истинно, он вернет True. Если ни одно из условий не выполняется или выполняется более одного, возвращается значение False. Вот код для примера:

    Dim Inta Как integer

    тусклые INTB, как целое число

    Dim Blnresult Как Boolean

    INTA = 5

    INTB = 10

    Если Inta = 5 Xor INTB = 5, затем

    BLNRRESULT = TRUE

    Else

        blnResult = False

    End If

    В этом примере мы хотим проверить, равно ли ровно одно из значений (intA или IntB) 5.Если истинно только одно условие, значение Boolean blnResult будет True, в противном случае — False.

    Сначала мы устанавливаем значение intA равным 5 и intB равным 10:

    После этого мы используем оператор или в операторе If, чтобы проверить, равно ли какое-либо из значений 5:

    If intA = 5 Xor intB = 5 Then

        blnResult = True

    Else

        blnResult = False

    End If

    Поскольку значение intA равно 5, а intB равно 10, blnResult возвращает True:

    Изображение 4.Использование логического оператора Xor в VBA

    Оператор

    Оператор Is проверяет, хранят ли две объектные переменные один и тот же объект.

    Давайте рассмотрим пример. Здесь мы назначим два рабочих листа объектам рабочего листа rng1 и rng2, проверяя, хранят ли два объекта рабочего листа один и тот же рабочий лист:

    Sub ComateOGhots ()

    Dim WS1 в качестве листа, WS2 в качестве рабочего листа

    набор WS1 = листы («лист1»)

    набор WS2 = листы («лист2»)

    Если WS1 WS2, то

        MsgBox «Тот же WS»

    Else

        MsgBox «Другие WS»

    End If

     

    End Sub

    Конечно, объекты рабочего листа не совпадают, поэтому возвращается «Разные WS».

    Нравится Оператор

    Оператор Like может сравнивать две строки на наличие неточных совпадений. В этом примере проверяется, начинается ли строка с «Mr.»

    Sub likedemo ()

    dim bstrame как строка

    dim blnresult как boolean

    strname = «Мистер Майкл Джеймс»

    , если зонтик, как «MR *», то

    BLNRRESULT = TRUE

    Else

        blnResult = False

    End If

     

    End Sub

     

    Программирование на VBA стало проще

    Прекратите искать код VBA в Интернете.Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области кодирования и множеством функций, позволяющих сэкономить время для всех пользователей!

    Узнайте больше!

    логических операторов SQL в предложении where с синтаксисом и оператором

    AND && AND Operator
    OR || ИЛИ Оператор
    НЕ ! Отрицает значение
    XOR Оператор XOR
    Оператор SQL AND OR NOT и XOR можно использовать с предложением WHERE для вывода набора записей. с соответствующей комбинацией таблицы базы данных.
    Это наш наш стол 2 Макс Ruin Три 85 мужской 3 Арнольд Три 55 мужчина 4 Криш Star Четыре 60 Мужской 98

    8
    5 John Mike четыре 60 60 6 Alex John четыре 55 MEAL
    7 мой Джон Роб Пятый 78 мужской
    8 Асруид Пять 85 85
    9 TES QRY шесть 70021 70021 10 Big John четыре 55

    Мы применим команду AND для отображения записей класса Four с большим количеством чем 70 марок.
      ВЫБЕРИТЕ * ОТ УЧЕНИКА ГДЕ И отметьте >70  

    ID 0
    ID Имя класса Mark 1
    1 John Deo четыре 70099

    8
    15 Tade Row четыре 88 Мужской
    16 GIMMY четыре 88
    31 Marry Toeey четыре 88 женщин
    МЫ видим, что возвращенная запись имеет класс = четыре, а отметка больше 70.

    Здесь выполняются оба условия.

      ВЫБЕРИТЕ * ОТ учащегося ГДЕ ИЛИ отметьте >90  

    8
    ID Имя Класс марка секс
    8 Asruid Пять 85 мужской
    12 Recky Шесть 94 мужчина
    18 HONNY пять 75 75 33 Kenn Rew шесть 96 мужчина
    Здесь возвращаемые записи либо относятся к классу Five, либо имеют оценку более 90.Любое из двух условий должно быть выполнено.

    И ИЛИ

    условие1 ИЛИ условие2 Любое из условий должно быть выполнено для записи
    условие1 И условие2 Оба условия должны быть выполнены для записи.

    Использование И ИЛИ со скобкой.

    Показать всех учеников пятого и шестого классов, набравших более 80 баллов.
      ВЫБЕРИТЕ * ОТ ученика ГДЕ ИЛИ и отметьте >80  
    Это будет включать некоторые неправильные записи
    ID Имя Класс марка секс
    8 Asruid Пять 85 мужской
    11 Ronald Шесть 89 мужской
    12 Recky Шесть 94 мужской
    18 Honny Пять 75 мужской
    33 Кенн Вожжа Шесть 96 мужской
    35 Номер ряда Шесть 88

    2 женский

    2 У вас есть один ученик с 75 баллами…. Это связано с тем, что в нашем запросе учитываются все ученики шестого класса, набравшие более 80 баллов, но не применяется такое же условие оценки выше 80 к ученикам пятого класса. Мы использовали одно условие ИЛИ не в том месте. Вот правильный SQL
      SELECT * FROM student WHERE (class='Five' OR) и отметьте >80  
    ID Имя Класс марка секс
    8 Asruid Пять 85 мужской
    11 Ronald Шесть 89 мужской
    12 Recky Шесть 94 мужской
    33 Кенн Rein Шесть 96 мужские
    35 Ряды Noump Шесть 88 женский
    У нас есть разные наборы проходных баллов для разных классов, отображаем всех, кто набрал больше проходного балла.
      ВЫБРАТЬ * ОТ ученика ГДЕ (класс='пять' И оценка>75) ИЛИ
     (класс='Шесть' И отметка>80) ИЛИ (класс='Семь' И отметка>85)  
    9 0021 33
    ID Имя Класс марка секс
    8 Asruid Пять 85 мужской
    11 Ronald Шесть 89 мужской
    12 Recky Шесть 94 мужской
    13 KTy Семь 88 мужской
    14 Bigy Семь 88 мужской
    25 гифф буксировочный Семь 88 мужской
    28 Rojj Base Семь 86 мужчина
    32 Бинн Ротт Семь 90 мужской
    Kenn Rire шесть 35
    35 Rows Noump шесть 88 женщин женщин

    Использование не

    Мы используем NOT для отрицания любого сравнения.
      ВЫБЕРИТЕ * ОТ ученика, ГДЕ НЕ класс = 'Пять'  
    Выходные данные будут включать все классы, кроме класса Five .
      ВЫБЕРИТЕ * ОТ учащегося
    ГДЕ класс НЕ В («Пять», «Шесть», «Четыре», «Семь», «Три»)  
    ID 0 ID Sex Mark
    1
    20 Jackly 65 женщина
    23 Ирод Восемь 79 мужской
      ВЫБЕРИТЕ * ОТ УЧЕНИКА 20 2 1 МЫ 50 СТАВИТЬ
    Выход
     
    ID 0
    ID Имя класс Mark
    19
    19 Tinny 18 Мужской
    Студенческий стол
    Сборник с SQL Dump

    Xor

    Исключающее ИЛИ дает вывод как 1 ( True ), когда входные данные различаются.
      ВЫБОР 1 ИСКЛЮЧАЮЩЕЕ ИЛИ 0; № 1
    ВЫБЕРИТЕ 0 ИСКЛЮЧАЮЩЕЕ ИЛИ 1; № 1
    ВЫБЕРИТЕ 1 ИСКЛЮЧАЮЩЕЕ ИЛИ 1; # 0
    ВЫБЕРИТЕ 0 ИСКЛЮЧАЮЩЕЕ ИЛИ 0; № 0  
      ВЫБЕРИТЕ * ОТ учащегося, ГДЕ отметка XOR  
    ID 0 ID класс Mark My John Rob пять 5 70021
    8 ASRUID пять 85 мужчина
    18 HONNY пять 75 мужчина
    19
    19 Tinny 18 мужчина
    4 Удалить запрос с или Удалить все записи третьего и четвертого классов
      УДАЛИТЬ ОТ студента, где ИЛИ  
    Удалить все записи из шестого и четвертого классов, получившие менее 80 баллов.
      УДАЛИТЬ ОТ ученика, где (класс='Шесть' или) и отметить  

    ОБНОВЛЕНИЕ Запрос с ИЛИ И

    Поставим дополнительные 5 баллов учащимся третьего и четвертого классов, набравшим более 80 баллов.
      UPDATE `студент` set mark=mark + 5
    ГДЕ (класс='Три' или) и отметьте >80  
    ←Операторы сравнения ←Выбор записей SQL ГДЕ →

    Семейство продуктов Bare Die: XOR (Exclusive OR) Gate — Die Devices | Вафли | Кости

    Найдите и добавьте требуемую микросхему Gate XOR (Exclusive OR) в свой проект, используя наш инструмент поиска деталей и создатель спецификаций.

    Пожалуйста, используйте наш Инструмент параметрического поиска или альтернативно выберите продукт из списка ниже:

    Доступные продукты:

    • 54AC86   Ворота операционной Quad Exclusive 54AC86 изготовлены на базе 1.Процесс CMOS 5 мкм 5 В. Входы устройства совместимы со стандартными выходами CMOS и выходами LSTTL через подтягивающие резисторы. Устройство выполняет булевы функции Y = A⊕B = A\B + AB\ в положительной логике.
    • 54ACT86   54ACT86 Quad Exclusive OR Gate изготовлен на основе КМОП-процесса 1,5 мкм 5 В. Входы устройства напрямую совместимы со стандартными выходами CMOS и TTL. Устройство выполняет булевы функции Y = A⊕B = A\B + AB\ в положительной логике.
    • 54HC86   Ворота операционной Quad Exclusive 54HC86 изготовлены на базе 2.Процесс CMOS 5 мкм 5 В. Входы совместимы со стандартными выходами CMOS и выходами LSTTL через подтягивающие резисторы. Устройство выполняет булевы функции Y = A⊕B = A\B + AB\ в положительной логике.
    • 54HCT86   54HCT86 Quad Exclusive OR Gate изготовлен на основе КМОП-процесса 2,5 мкм 5 В. Входы устройства напрямую принимают стандартные выходы CMOS и выходы LSTTL. Устройство выполняет булевы функции Y = A⊕B = A\B + AB\ в положительной логике.
    • 54LS86A   54LS86A изготовлен с использованием биполярного процесса 2 мкм 40 В, содержит четыре независимых вентиля и выполняет логические функции Y = A⊕B = A\B + AB\ в положительной логике.Устройство характеризуется во всем военном температурном диапазоне.
    • 74AC11086 Четырехканальные вентили исключающего ИЛИ с 2 входами
    • 74AC86 Четырехканальные вентили исключающего ИЛИ 74AC86 изготовлены на основе КМОП-процесса 1,5 мкм 5 В. Входы устройства совместимы со стандартными выходами CMOS и выходами LSTTL через подтягивающие резисторы. Устройство выполняет булевы функции Y = A⊕B = A\B + AB\ в положительной логике.
    • 74ACT86   Ворота операционной Quad Exclusive 74ACT86 изготовлены на базе 1.Процесс CMOS 5 мкм 5 В. Входы устройства напрямую совместимы со стандартными выходами CMOS и TTL. Устройство выполняет булевы функции Y = A⊕B = A\B + AB\ в положительной логике.
    • 74HC86   74HC86 Quad Exclusive OR Gate изготовлен на основе КМОП-процесса 2,5 мкм 5 В. Входы совместимы со стандартными выходами CMOS и выходами LSTTL через подтягивающие резисторы. Устройство выполняет булевы функции Y = A⊕B = A\B + AB\ в положительной логике.
    • 74HCT86   Ворота операционной Quad Exclusive 74HCT86 изготовлены на базе 2.Процесс CMOS 5 мкм 5 В. Входы устройства напрямую принимают стандартные выходы CMOS и выходы LSTTL. Устройство выполняет булевы функции Y = A⊕B = A\B + AB\ в положительной логике.
    • 74LS86A   74LS86A изготовлен с использованием биполярного процесса 2 мкм 40 В, содержит четыре независимых вентиля и выполняет логические функции Y = A⊕B = A\B + AB\ в положительной логике.
    • CD4030B   CD4030B Счетверенный вентиль исключающего ИЛИ изготовлен по 3-мкм 15CMOS-процессу и состоит из x4 независимых вентилей исключающего ИЛИ, выполняющих логические функции Y = A⊕B = A\B + AB\.Устройство характеризуется во всем военном температурном диапазоне.
    • CD4030B   CMOS Quad Exclusive-OR Gate
    • CD4030B REV 2   CD4030B Quad Exclusive OR Gate изготовлен по 3-мкм 15CMOS-технологии и состоит из x4 независимых вентилей Exclusive OR, выполняющих логические функции Y = A⊊ + АВ\. Устройство характеризуется во всем военном температурном диапазоне.
    • CD4070B   CD4070B обеспечивает прямую реализацию функции исключающее ИЛИ.Устройство имеет одинаковый ток источника и стока и соответствует стандартному выходному приводу серии B. Выходы с буферизацией улучшают передаточные характеристики, обеспечивая очень высокий коэффициент усиления.
    • CD4070B   CMOS Quad Exclusive-OR Gate
    • CD4070B REV 2   CD4070B Quad Exclusive OR Gate изготовлен по 3-мкм 15CMOS-технологии и состоит из x4 независимых вентилей Exclusive OR, выполняющих логические функции Y = A⊊ + АВ\. Устройство характеризуется во всем военном температурном диапазоне.
    • CD74AC86 Quad 2-ввода эксклюзивные - или ворота
    • CD74ACT86 CD74ACT86 Quad 2-ввода эксклюзивные или ворота
    • CD74HC86 Высокоскоростной CD74HC86 Высокоскоростной CMOS Logic Quad 2-входные эксклюзивные или ворота
    • CD74HCT86 высокая скорость CMOS Logic Quad 2-ввода эксклюзивные - или ворота
    • SN74AC86 SN74AC86 четырехместный 2-ввода эксклюзивные или ворота
    • SN74ACT86 четырехместный 2-ввод эксклюзивные или ворота
    • SN74AHC1G86 SN74AHC1G86 SN74AHC1G86 SN74AHC1G86
    • SN74AHC86 SN74AHC86 Четырехместный 2-ввода эксклюзивные или ворота
    • SN74AHCT1G86 SN74AHCT1G86 SN74AHT1G88 SN74196
    • SN74AHCT86 Четырехместный 2-ввода эксклюзивные или ворота
    • SN74ALLE86 Четырехместный 2 или Gates
    • SN74AS86A Четырехместный, 2 входа, исключающее ИЛИ Ворота
    • SN74AUC2G86 Dual 2-ввода эксклюзивные или ворота
    • SN74F86 Четырехместный 2-ввода Эксклюзивные или ворота
    • SN74HC86 Четырехместный 2-ввод Эксклюзивные или ворота
    • SN74LS136 Quad 2 ввода -Норольные ворота с выходами с открытым коллектором
    • SN74LS86A Quad 2-ввода эксклюзивные или ворота
    • SN74LV86A четырехместный 2-ввода эксклюзивные или ворота
    • SN74LVC1G386 SN74LVC1G386 Одноместный 3-входные полотно-XOR Gate
    • SN74LVC1G86 Одиночный логический элемент исключающее ИЛИ с 2 входами
    • SN74LVC2G86 Двойной логический элемент исключающее ИЛИ с 2 входами
    • .

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован.