Проект «логика для чайников». Параграф 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, если какой-либо из операндов имеет ненулевое значение, то результат операции равен 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) !
!x
true
, еслиx
равенfalse
; илиfalse
, еслиx
равенtrue
Логическое И (AND) &&
x && y
true
, если иx
,иy
равныtrue
; в противном случае –false
Логическое ИЛИ (OR) ||
x || y
true
, еслиx
илиy
равенtrue
; в противном случае –false
Логическое НЕ (NOT)
Вы уже сталкивались с унарным оператором логического НЕ в уроке «4.
9 – Логические (булевы) значения». Мы можем резюмировать эффекты логического НЕ следующим образом:
Логическое НЕ (оператор !
)Операнд Результат true
false
false
true
Если операнд логического НЕ вычисляется как
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
.Логическое ИЛИ (оператор ||
)Левый операнд Правый операнд Результат false
false
false
false
true
true
true
false
true
true
true
true
Например, рассмотрим следующую программу:
#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
.Логическое И (оператор &&
)Левый операнд Правый операнд Результат false
false
false
false
true
false
true
false
false
true
true
true
Например, нам может потребоваться узнать, находится ли значение переменной
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) – это логический оператор, представленный на некоторых языках, который используется для проверки истинности нечетного числа условий.
Логическое исключающее ИЛИ Левый операнд Правый операнд Результат false
false
false
false
true
true
true
false
true
true
true
false
В 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
Это наш наш стол 2Макс Ruin Три 85 мужской 3 Арнольд Три 55 мужчина 4 Криш Star Четыре 60 Мужской 98
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 женщин Здесь выполняются оба условия.
ВЫБЕРИТЕ * ОТ учащегося ГДЕ ИЛИ отметьте >90
ID Имя Класс марка секс 8 Asruid Пять 85 мужской 12 Recky Шесть 94 мужчина 18 HONNY пять 75 75 33 Kenn Rew шесть 96 мужчина 8И ИЛИ
условие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)
ID Имя Класс марка секс 8 Asruid Пять 85 мужской 11 Ronald Шесть 89 мужской 12 Recky Шесть 94 мужской 13 KTy Семь 88 мужской 14 Bigy Семь 88 мужской 25 гифф буксировочный Семь 88 мужской 28 Rojj Base Семь 86 мужчина 32 Бинн Ротт Семь 90 мужской 9 0021 33 Kenn Rire шесть 35 35 Rows Noump шесть 88 женщин женщин Использование не
Мы используем NOT для отрицания любого сравнения.ВЫБЕРИТЕ * ОТ ученика, ГДЕ НЕ класс = 'Пять'
ВЫБЕРИТЕ * ОТ учащегося ГДЕ класс НЕ В («Пять», «Шесть», «Четыре», «Семь», «Три»)
ID 0 ID Sex Mark 1 20 Jackly 65 женщина 23 Ирод Восемь 79 мужской ВЫБЕРИТЕ * ОТ УЧЕНИКА 20 2 1 МЫ 50 СТАВИТЬ Выход
ID 0 ID Имя класс Mark 19 19 Tinny 18 Мужской 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 Удалить запрос с или Удалить все записи третьего и четвертого классов УДАЛИТЬ ОТ студента, где ИЛИ
УДАЛИТЬ ОТ ученика, где (класс='Шесть' или) и отметить
ОБНОВЛЕНИЕ Запрос с ИЛИ И
Поставим дополнительные 5 баллов учащимся третьего и четвертого классов, набравшим более 80 баллов.UPDATE `студент` set mark=mark + 5 ГДЕ (класс='Три' или) и отметьте >80
Семейство продуктов 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 входами
-
.