Исключающее логическое или: Основные логические операции. AND, NOT, OR и XOR (исключающее или)

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. Условная операция
Содержание

Содержание

Элементы Исключающее ИЛИ/Исключающее ИЛИ-НЕ/Нечётность/Чётность

Библиотека: Базовые
Введён в: 2.0 Beta 1 для Исключающее ИЛИ/Нечётность/Чётность; 2.0 Beta 6 для Исключающее ИЛИ-НЕ
Внешний вид:

Поведение

Элементы Исключающее ИЛИ, Исключающее ИЛИ-НЕ, Нечётность и Чётность вычисляют соответствующую функцию от значений на входах и выдают результат на выход.

По умолчанию, неподключенные входы игнорируются — то есть, если входы действительно не имеют ничего подключенного к ним — даже провода. Таким образом, вы можете добавить 5-входовый элемент, но подключить только два входа, и он будет работать как 2-входовый элемент; это избавляет вас от необходимости беспокоиться о настройке количества входов каждый раз при создании элемента. (Если все входы не подключены, то на выходе значение ошибки X.) Некоторые пользователи, однако, предпочитают, чтобы Logisim настаивал, чтобы все входы были подключены, поскольку это соответствует реальным элементам. Вы можете включить это поведение, выбрав меню Проект > Параметры…, перейдя на вкладку Моделирование, и выбрав вариант Ошибка для неопределённых входов для Выход элемента при неопределённости.

Двухвходовая таблица истинности для элементов следующая.

x y Исключающее ИЛИ Исключающее ИЛИ-НЕ Нечётность Чётность
0 0 0 1 0 1
0 1 1 0 1 0
1 0 1 0 1 0
1 1 0 1 0 1

Как вы можете видеть, элементы Нечётность и Исключающее ИЛИ ведут себя одинаково в случае двух входов; аналогично, элементы Чётность и Исключающее ИЛИ-НЕ ведут себя одинаково. Но если входов с определённым значением больше двух, то элемент Исключающее ИЛИ будет давать на выходе 1, когда единица строго на одном входе, тогда как элемент Нечётность даст на выходе 1, когда единица на нечётном количестве входов. Элемент Исключающее ИЛИ-НЕ будет давать на выходе 1, когда входов с единицей строго не один, тогда как элемент Чётность даст 1, когда входов с единицей чётное количество. Элементы Исключающее ИЛИ и Исключающее ИЛИ-НЕ имеют атрибут, названный Многовходовое поведение, который позволяет настроить их на использование поведения элементов Нечётность и Чётность.

Если на каких-либо входах значение ошибки (например, если противоречивые значения поступают на один и тот же провод) или плавающее значение, то на выходе будет значение ошибки.

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

Примечание: многие специалисты утверждают, что поведение фигурного элемента Исключающее ИЛИ должно соответствовать поведению элемента Нечётность, но по этому вопросу нет согласия. Поведение Logisim по умолчанию для элемента Исключающее ИЛИ основано на стандарте IEEE 91. Это также согласуется с интуитивным пониманием термина Исключающее ИЛИ: официант, спрашивающий, хотите вы гарнир из картофельного пюре, моркови, зеленого горошка, или шинкованной капусты, примет только один выбор, а не три, независимо от того, что вам могут сказать некоторые специалисты. (Должен признать, однако, что я не подвергал это заявление серьезным испытаниям.) Вы можете настроить элементы Исключающее ИЛИ и Исключающее ИЛИ-НЕ на использование одного из вариантов, меняя его атрибут Многовходовое поведение.

Контакты (предполагается, что компонент направлен на восток)

Западный край (входы, разрядность соответствует атрибуту Биты данных)

Входы компонента. Их будет столько, сколько указано в атрибуте Количество входов.


Заметьте, что если вы используете фигурные элементы, то западный край элементов Исключающее ИЛИ и Исключающее ИЛИ-НЕ будет искривлён. Тем не менее, входные контакты расположены вряд. Logisim отрисовывает короткие отрезки чтобы показать это; если вы перекроете отрезок, программа будет без предупреждений предполагать, что вы не хотели перекрыть его. При использовании «Вида для печати», эти отрезки не будут отрисованы, если не подключены к проводам.


Восточный край (выход, разрядность соответствует атрибуту Биты данных)

Выход элемента, значение на котором вычисляется на основании текущих значений на входах, как описано выше.


Атрибуты

Когда компонент выбран, или уже добавлен, клавиши от 0 до 9 меняют его атрибут Количество входов, комбинации от Alt-0 до Alt-9 меняют его атрибут Биты данных, а клавиши со стрелками меняют его атрибут Направление.

Направление

Направление компонента (его выхода относительно его входов).


Биты данных

Разрядность входов и выходов компонента.


Размер элемента

Определяет, следует отрисовывать широкую или узкую версию компонента. Это не влияет на количество входов, которое определяется атрибутом Количество входов; правда, если количество входов превышает 3 (для узкого компонента) или 5 (для широкого), то элемент будет отрисовываться с «крыльями», чтобы вместить запрошенное количество входов.


Количество входов

Определяет, сколько контактов на западном крае будет иметь компонент.


Многовходовое поведение (только для Исключающее ИЛИ и Исключающее ИЛИ-НЕ)

Когда входов три или более, то значение на выходе элементов Исключающее ИЛИ и Исключающее ИЛИ-НЕ будет основано или на том, что 1 строго на одном входе (по умолчанию), или на нечётном количестве входов.


Поведение Инструмента Нажатие

Нет.

Поведение Инструмента Текст

Нет.

Назад к Справке по библиотеке

Булев оператор 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 двух переменных в Python?

Как получить логическое xor двух переменных в Python?

Например, у меня есть две переменные, которые, как я ожидаю, будут строками. Я хочу проверить, что только один из них содержит истинное значение (это не None или пустая строка):

str1 = raw_input("Enter string one:")
str2 = raw_input("Enter string two:")
if logical_xor(str1, str2):
    print "ok"
else:
    print "bad"

Оператор ^ кажется побитовым и не определен для всех объектов:

>>> 1 ^ 1
0
>>> 2 ^ 1
3
>>> "abc" ^ ""
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for ^: 'str' and 'str'

python

logical-operators

Поделиться

Источник


Zach Hirsch    

11 января 2009 в 12:34

24 ответа


  • XOR в двух списках в Python

    Я новичок в Python, и я должен сделать XOR между двумя списками (первый с длиной: 600, а другой 60) Я действительно не знаю, как это сделать, но если кто-нибудь объяснит мне, как это сделать, я буду очень рад. ):

    from operator import xor
    xor(bool(a), bool(b))  # Note: converting to bools is essential
    

    Поделиться


    singingwolfboy    

    14 июня 2012 в 15:34


    • Реализация XOR в Python

      Поэтому я пытаюсь реализовать логический оператор XOR в Python. Сначала я спрашиваю пользователя, сколько входов он хочет протестировать (4 — TT, TF, FT, FF). Я знаю, что XOR оценивает T&T->F, T&F->T, F&T->T, F&F->F. Я сохраняю первое логическое значение, которое я получаю в…

    • Операции XOR биты в python

      Ну, у меня есть задание реализовать DES, и я выбрал python, только проблема в том, что я не могу понять, как XOR бит строки или байтовой строки, я могу вручную XOR их, если только мне удастся прочитать в них 1 и 0. Пример: s1 = b’abc’ s2 = b’efg’ s3 = XOR(s1,s2) // my own method Как я могу их XOR…



    45

    Как объяснил Зак , вы можете использовать:

    xor = bool(a) ^ bool(b)
    

    Лично я предпочитаю немного другой диалект:

    xor = bool(a) + bool(b) == 1
    

    Этот диалект вдохновлен логическим языком построения диаграмм, который я изучал в школе, где «OR» обозначалось коробкой, содержащей ≥1 (больше или равно 1), а «XOR»-коробкой, содержащей =1 . c…» означает, что число истинных операндов нечетно. Этот оператор-«parity».

  • «1 = a + b + c…» означает, что истинен ровно один операнд. Это «exclusive or», meaning «one to the exclusion of the others».

Поделиться


ddaa    

11 января 2009 в 13:44



29

  • Python логический or: A or B: возвращает A , если bool(A) равен True , в противном случае возвращает B
  • Python логический and: A and B: возвращает A , если bool(A) равно False , в противном случае возвращает B

Чтобы сохранить большую часть этого образа мышления, мое логическое определение xor было бы следующим:

def logical_xor(a, b):
    if bool(a) == bool(b):
        return False
    else:
        return a or b

Таким образом, он может вернуть a, b или False :

>>> logical_xor('this', 'that')
False
>>> logical_xor('', '')
False
>>> logical_xor('this', '')
'this'
>>> logical_xor('', 'that')
'that'

Поделиться


nosklo    

11 января 2009 в 13:10



25

Я протестировал несколько подходов, и not a != (not b) оказался самым быстрым. bool(v)
return sum

И реализуется это просто, как хорошо:

if xor(False, False, True, False):
    print "Hello World!"

Поскольку это обобщенный N-арный логический XOR, его значение истинности будет истинным всякий раз, когда число истинных операндов нечетно (и не только тогда, когда точно один из них истинен, это всего лишь один случай, когда N-арный XOR истинен).

Таким образом, если вы ищете N-арный предикат, который истинен только тогда, когда есть ровно один из его операндов, вы можете использовать:

def isOne(*vars):
    sum = False
    for v in vars:
        if sum and v:
            return False
        else:
            sum = sum or v
    return sum

Поделиться


micdah    

20 апреля 2010 в 13:21



9

Награждение нить:

Идея Anoder… Просто попробуйте (может быть) питоновское выражение «is not» для того, чтобы получить поведение логического » xor»

Таблица истинности была бы:

>>> True is not True
False
>>> True is not False
True
>>> False is not True
True
>>> False is not False
False
>>>

А для вашего примера строка:

>>> "abc" is not  ""
True
>>> 'abc' is not 'abc' 
False
>>> 'abc' is not '' 
True
>>> '' is not 'abc' 
True
>>> '' is not '' 
False
>>> 

Однако, как они указывали выше, это зависит от фактического поведения, которое вы хотите вытащить из любой пары строк, потому что строки не являются болеанами. bool(b)

(Отредактировано-спасибо Арел)

Поделиться


Tomer Gal    

07 июня 2019 в 09:29



7

Исключительное или определяется следующим образом

def xor( a, b ):
    return (a or b) and not (a and b)

Поделиться


S.Lott    

11 января 2009 в 13:39



7

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

z = (x + y) % 2

который имеет следующую таблицу истинности:

     x
   |0|1|
  -+-+-+
  0|0|1|
y -+-+-+
  1|1|0|
  -+-+-+

Поделиться


Steve L    

08 марта 2014 в 05:11



7

Я знаю, что это поздно, но у меня была мысль, и это может быть полезно, просто для документации. Возможно, это сработало бы: np.abs(x-y) идея заключается в том, что

  1. если x=True=1 и y=False=0, то результат будет |1-0|=1=True
  2. если x=False=0 и y=False=0, то результат будет |0-0|=0=False
  3. если x=True=1 и y=True=1, то результат будет |1-1|=0=False
  4. если x=False=0 и y=True=1, то результатом будет |0-1|=1=True

Поделиться


BarocliniCplusplus    

01 августа 2016 в 21:57



6

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

Тем не менее, реализация xor , которая возвращает либо True , либо False , довольно проста; та, которая возвращает один из операндов, если это возможно, намного сложнее, потому что не существует консенсуса относительно того, какой операнд должен быть выбран, особенно когда существует более двух операндов. Например, должен ли xor(None, -1, [], True) возвращать None , [] или False ? Держу пари, что каждый ответ кажется некоторым людям самым интуитивным.

Для истинно или ложно-результат, есть аж пять возможных вариантов: возвращение первого операнда (если он совпадает с конечным результатом в стоимость, остальное логическое), вернуть первый матч (если хотя бы одно существует, другое логическое), возвращает последний операнд (если …-то еще …), возвращать последних матча (если … еще …), или всегда возвращают логическое значение. В общей сложности это 5 ** 2 = 25 вкусов xor .

def xor(*operands, falsechoice = -2, truechoice = -2):
  """A single-evaluation, multi-operand, full-choice xor implementation
  falsechoice, truechoice: 0 = always bool, +/-1 = first/last operand, +/-2 = first/last match"""
  if not operands:
    raise TypeError('at least one operand expected')
  choices = [falsechoice, truechoice]
  matches = {}
  result = False
  first = True
  value = choice = None
  # avoid using index or slice since operands may be an infinite iterator
  for operand in operands:
    # evaluate each operand once only so as to avoid unintended side effects
    value = bool(operand)
    # the actual xor operation
    result ^= value
    # choice for the current operand, which may or may not match end result
    choice = choices[value]
    # if choice is last match;
    # or last operand and the current operand, in case it is last, matches result;
    # or first operand and the current operand is indeed first;
    # or first match and there hasn't been a match so far
    if choice < -1 or (choice == -1 and value == result) or (choice == 1 and first) or (choice > 1 and value not in matches):
      # store the current operand
      matches[value] = operand
    # next operand will no longer be first
    first = False
  # if choice for result is last operand, but they mismatch
  if (choices[result] == -1) and (result != value):
    return result
  else:
    # return the stored matching operand, if existing, else result as bool
    return matches. get(result, result)

testcases = [
  (-1, None, True, {None: None}, [], 'a'),
  (None, -1, {None: None}, 'a', []),
  (None, -1, True, {None: None}, 'a', []),
  (-1, None, {None: None}, [], 'a')]
choices = {-2: 'last match', -1: 'last operand', 0: 'always bool', 1: 'first operand', 2: 'first match'}
for c in testcases:
  print(c)
  for f in sorted(choices.keys()):
    for t in sorted(choices.keys()):
      x = xor(*c, falsechoice = f, truechoice = t)
      print('f: %d (%s)\tt: %d (%s)\tx: %s' % (f, choices[f], t, choices[t], x))
  print()

Поделиться


Unknown    

04 июля 2009 в 09:01



6

Как насчет этого?

(not b and a) or (not a and b)

даст a , если b ложно
даст b , если a ложно
даст False в противном случае

Или с тернарным выражением Python 2. False # True, as expected of XOR
True != False != False # False! Equivalent to `(True != False) and (False != False)`

(P.S. Я попытался отредактировать принятый ответ, чтобы включить это предупреждение, но мое изменение было отклонено.)

Поделиться


Arel    

25 июля 2019 в 13:32



5

Многим людям, включая меня, нужна функция xor , которая ведет себя как N-входная схема xor, где n-переменная. (См . https://en.wikipedia.org/wiki/ XOR_gate ). следующая простая функция реализует это.

def xor(*args):
   """
   This function accepts an arbitrary number of input arguments, returning True
   if and only if bool() evaluates to True for an odd number of the input arguments.
   """

   return bool(sum(map(bool,args)) % 2)

Пример ввода-вывода следует следующим образом:

In [1]: xor(False, True)
Out[1]: True

In [2]: xor(True, True)
Out[2]: False

In [3]: xor(True, True, True)
Out[3]: True

Поделиться


Phillip M. Feldman    

14 марта 2019 в 06:25



4

Это легко, когда вы знаете, что делает XOR:

def logical_xor(a, b):
    return (a and not b) or (not a and b)

test_data = [
  [False, False],
  [False, True],
  [True, False],
  [True, True],
]

for a, b in test_data:
    print '%r xor %s = %r' % (a, b, logical_xor(a, b))

Поделиться


Denis Barmenkov    

10 февраля 2011 в 13:34



4

Это приводит к логическому исключению XOR для двух (или более) переменных

str1 = raw_input("Enter string one:")
str2 = raw_input("Enter string two:")

any([str1, str2]) and not all([str1, str2])

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

Поделиться


Arthur Hv    

04 марта 2019 в 15:04



3

XOR реализован в operator.xor .

Поделиться


lbolla    

09 января 2012 в 11:49



3

Вот как я бы закодировал любую таблицу истинности. В частности, для xor мы имеем:

| a | b  | xor   |             |
|---|----|-------|-------------|
| T | T  | F     |             |
| T | F  | T     | a and not b |
| F | T  | T     | not a and b |
| F | F  | F     |             |

Просто посмотрите на значения T в столбце ответа и соедините все истинные случаи с логическим или. Таким образом, эта таблица истинности может быть получена в случае 2 или 3. Следовательно,

xor = lambda a, b: (a and not b) or (not a and b)

Поделиться


snagpaul    

25 марта 2020 в 23:09



0

def xor(*args):
    return sum(bool(arg) for arg in args)==1

Поделиться


Rezan Moh    

03 сентября 2020 в 03:48



-7

Мы можем легко найти xor двух переменных с помощью:

def xor(a,b):
    return a !=b

Пример:

xor(True, False) > > > True

Поделиться


Muhammad Abdullah    

10 января 2018 в 18:35


Похожие вопросы:

Как работает замена переменных XOR?

Может ли кто-нибудь объяснить мне, как работает XOR замена двух переменных без временной переменной? void xorSwap (int *x, int *y) { if (x != y) { *x ^= *y; *y ^= *x; *x ^= *y; } } Я понимаю, что…

Как упростить логическое выражение с помощью XOR?

Я хочу упростить логическое выражение. Выражение примерно такое X1 xor (X2 || X3 && X4 || x5) Как упростить это выражение, используя правила булевой алгебры? Кроме того , я хочу…

Написать логическое выражение, используя Python

Я пытаюсь написать логическое выражение в Python, но, похоже, Python может выполнять только XOR выражений с битовыми операциями. Как лучше всего написать это выражение в Python без оператора XOR? (A…

XOR в двух списках в Python

Я новичок в Python, и я должен сделать XOR между двумя списками (первый с длиной: 600, а другой 60) Я действительно не знаю, как это сделать, но если кто-нибудь объяснит мне, как это сделать, я буду…

Операнд XOR на двух строках в python?

Я пытаюсь использовать операцию XOR, используя две строки в python. Вот мой сценарий: packet = 277500011200.decode(hex) xor = codecs. xor переменная xor должна быть…

Реализация XOR в Python

Поэтому я пытаюсь реализовать логический оператор XOR в Python. Сначала я спрашиваю пользователя, сколько входов он хочет протестировать (4 — TT, TF, FT, FF). Я знаю, что XOR оценивает T&T->F,…

Операции XOR биты в python

Ну, у меня есть задание реализовать DES, и я выбрал python, только проблема в том, что я не могу понять, как XOR бит строки или байтовой строки, я могу вручную XOR их, если только мне удастся…

Перепишите логическое выражение с помощью XOR

Я новичок в логическом дизайне и пытаюсь учиться сам. Я понимаю, что XOR указывает на то, что выход будет равен 0 только тогда, когда входы одинаковы. Кроме того, я понимаю, что при наличии двух…

Как получить XOR-маршрутизацию двух компонентов с React Router?

Мое приложение — составляющую выглядит как-то так: class App extends Component { render() { return ( <div> <Route path=’/:category?/:post?’ component={Posts}/> <Route exact., *,` по аналогии с алгебраическим умножением может никак не обозначаться

 


Дизъюнкция, нестрогая дизъюнкция, логическое сложение, операция ИЛИ, операция OR.

`|«, vv, +`


Строгая дизъюнкция, разделительная дизъюнкция, исключающее ИЛИ, сложение по модулю `2`.

`o+, Delta`


Эквивалентность, эквиваленция, равенство, равнозначность.

`iff, -=`


Импликация, следование, следствие

`=>, ->`


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

Для того, чтобы не путаться и гарантированно перебрать все возможные комбинации значений операндов, принято записывать их в лексикографическом порядке (условно считается, что «ложь» `<` «истина»).

Таблица истинности для конъюнкции






Первый операнд

Второй операнд

Значение операции

`0`

`0`

`bb0`

`0`

`1`

`bb0`

`1`

`0`

`bb0`

`1`

`1`

`bb1`

 

Таблица истинности для дизъюнкции






Первый операнд

Второй операнд

Значение операции

`0`

`0`

`bb0`

`0`

`1`

`bb1`

`1`

`0`

`bb1`

`1`

`1`

`bb1`

 

Таблица истинности для строгой дизъюнкции






Первый операнд

Второй операнд

Значение операции

`0`

`0`

`bb0`

`0`

`1`

`bb1`

`1`

`0`

`bb1`

`1`

`1`

`bb0`

Таблица истинности для эквивалентности






Первый операнд

Второй операнд

Значение операции

`0`

`0`

`bb1`

`0`

`1`

`bb0`

`1`

`0`

`bb0`

`1`

`1`

`bb1`

 

Таблица истинности для импликации






Первый операнд

Второй операнд

Значение операции

`0`

`0`

`bb1`

`0`

`1`

`bb1`

`1`

`0`

`bb0`

`1`

`1`

`bb1`

                 

Таблица истинности для отрицания




Значение операнда

Значение операции

`0`

`bb1`

`1`

`bb0`

Теперь осталось лишь установить соответствие между логическими операциями и логическими связками в русском языке.








Логическая операция

Логические связки в русском языке

Отрицание

Неверно что…

Конъюнкция

и, а, но,  а также, при этом,

одновременно с этим, хотя

Дизъюнкция

Или

Строгая дизъюнкция

или, либо

Эквивалентность

Тогда и только тогда когда,

необходимо и достаточно чтобы

Импликация

если то, необходимо чтобы, достаточно чтобы

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

 Рассмотрим высказывание: «Мы идём в кино в субботу или в воскресение». Здесь два простых высказывания: «Мы идём в кино в субботу» и «Мы идём в кино в воскресение». Между ними стоит союз ИЛИ, который можно интерпретировать двояко. В данном случае очевидно, что мы можем пойти в кино и в субботу, и в воскресение, поэтому дизъюнкция будет нестрогая. Возьмём две логические переменные – `p` и `q` и присвоим им простые высказывания. Тогда исходное высказывание в формализованном виде будет выглядеть, как `bb(pvvq)`.

Рассмотрим высказывание: «Я сейчас на севере Москвы или на юго-западе Москвы». Здесь тоже два простых высказывания, которые связаны союзом ИЛИ. Но в этом случае союз ИЛИ интерпретируется, как строгая дизъюнкция, поскольку нельзя одновременно находиться в двух местах. Таким образом, если снова взять логические переменные `p` и `q`, то получится следующая логическая формула: `bb(p»o+q)`.

Рассмотрим высказывание: «Для того чтобы четырёхугольник был квадратом, необходимо, чтобы все его стороны были равны». Здесь два простых высказывания: «Четырёхугольник является квадратом» и «Все стороны четырёхугольника равны». Присвоим их соответственно логическим переменным `p` и `q`. Логическая связка «необходимо, чтобы» — это импликация. Весь вопрос в том, что из чего следует. (Какая запись правильная: `bbp -> bbq` или `bbq ->bbp`?)  Импликация ложна только в единственном случае: когда левый операнд имеет значение «истина», а правый – «ложь». Рассмотрим все возможные значения операндов и проанализируем, какая из ситуаций невозможна.

1) `p` и `q` ложны. Это значит, что четырёхугольник не является квадратом и его стороны не равны. Это возможная ситуация.

2) `p` – ложно, `q` – истинно. Это значит, что четырёхугольник не является квадратом, но стороны у него равны. Это возможно (ромб).

3) `p` – истинно, `q` – истинно. Это значит, что четырёхугольник является квадратом и стороны у него равны. Это возможная ситуация.

4) `p` – истинно, `q` – ложно. Это значит, что четырёхугольник является квадратом, но стороны у него не равны. Это невозможная ситуация.

Анализ ситуаций показывает, что левым операндом импликации должна быть переменная `p`. Таким образом, в формализованном виде исходное высказывание выглядит как `bb(p -> q)`.

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

Логические операции в Assembler — CodeTown.ru

Здравствуйте, уважаемые читатели. Сегодня мы поговорим об основных логических операциях в Assembler, и по традиции, разберем практический пример.

Простые логические операторы

Известные всем логические операторы и в Assembler выполняют практически такие же функции. Мы рассмотрим самые основные и наиболее используемые:

  • Логическое побитовое И
  • Логическое побитовое ИЛИ
  • Исключающее побитовое ИЛИ
  • Логическое побитовое И

    В Assembler этот оператор сравнивает два регистра по одному биту. Он обозначается как and, и вот пример синтаксиса:
    ;пример логического И в Assembler
    mov bx, 01101001b
    mov bl, 01000111b
    and bx, bl

    Очевидно, что результатом этой операции будет 01000001, но возникает один вопрос: куда записывается результат выполнения оператора?

    Так вот, результат записывается в регистр, который стоит первым после оператора and, в нашем случае — это регистр bx, то есть теперь его значение поменялось на 01000001.

    Логическая инструкция test

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

    .386
    .model flat,stdcall
    option casemap:none
    include ..\INCLUDE\kernel32.inc 
    include ..\INCLUDE\user32.inc 
    includelib ..\LIB\kernel32.lib 
    includelib ..\LIB\user32.lib 
    
    .data
    yes db "Chetnoe"
    no db "Ne chetnoe"
    stdout dd ?         
    cWritten dd ?
    
    .code
    start:
    invoke GetStdHandle, -11 ; дескриптор вывода
    mov stdout,eax           ; по умолчанию помещается в eax
    mov ah, 23
    test ah, 00000001b  ; сравниваем последний бит числа
    jz evn  
    invoke WriteConsoleA, stdout, ADDR no, sizeof no, ADDR cWritten, 0
    jmp exit
    evn:
    invoke WriteConsoleA, stdout, ADDR yes, sizeof yes, ADDR cWritten, 0
    exit:
    invoke ExitProcess,0  
    end start
    

    Число, которое мы проверяем на четность, помещаем в регистр ah, затем сравниваем последний бит числа с единицей, и если вернется единица, то число нечетное, а если ноль — четное, что соответственно выводится на экран. Напомню, что команда jz отвечает за условный переход на метку (метка evn), а команда jmp — за безусловный переход.

    Логическое побитовое ИЛИ

    В Assembler логическое побитовое ИЛИ обозначается or, и синтаксис идентичен синтаксису команды and, по своей сути представляет побитовое сложение.
    ;пример логического ИЛИ в Assembler
    mov bx, 01101001b
    mov bl, 01000111b
    or bx, bl

    Выполнение этой инструкции вернет 01101111 и поместит это двоичное число в регистр bx.

    Логическое исключающее ИЛИ

    Также помимо логического ИЛИ, часто используют исключающее ИЛИ в Assembler. Оно обозначается командой xor и выделяет различия в регистрах, то есть, если в одном бите содержится 1, а в другом 0, то xor вернет 1, если же в битах содержатся одинаковые значения, то xor вернет 0.

    Разберем на примере, за основу возьмем предыдущий пример проверки на четность:

    .386
    .model flat,stdcall
    option casemap:none
    include ..\INCLUDE\kernel32.inc 
    include ..\INCLUDE\user32.inc 
    includelib ..\LIB\kernel32.lib 
    includelib ..\LIB\user32.lib 
    
    .data
    yes db "Chetnoe"
    no db "Ne chetnoe"
    stdout dd ?         
    cWritten dd ?
    
    .code
    start:
    invoke GetStdHandle, -11 ; дескриптор вывода
    mov stdout,eax           ; по умолчанию помещается в eax
    xor ah, ah               ; обнуление регистра ah
    xor al, al               
    or ah, 21                ; помещаем в регистр число 21
    or al, 20
    xor ah, al
    xor al, ah
    xor ah, al               ; конструкция для смены значений регистров
    test ah, 00000001b  
    jz evn  
    invoke WriteConsoleA, stdout, ADDR no, sizeof no, ADDR cWritten, 0
    jmp exit
    evn:
    invoke WriteConsoleA, stdout, ADDR yes, sizeof yes, ADDR cWritten, 0
    exit:
    invoke ExitProcess,0  
    end start
    

    Конструкция из 3 xor позволяет поменять значения в регистрах, и по окончании в регистре ah будет содержаться число 20. Затем выведется сообщение о том, что число четное.

    Также отметим конструкцию xor ah, ah — она позволяет обнулить регистр. По сути это аналог команды mov ah, 0, но программисты любят использовать именно эту конструкцию, так как она занимает всего 2 байта, а команда mov — 5 байт.

    Заключение

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

    Скачать исходник 1
    Скачать исходник 2

    Поделиться ссылкой:

    Похожее

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




    Логические


    операторы и соответствующие им функции служат для реализации поэлементных
    логических операций над элементами одинаковых по размеру массивов (табл. 8.3).





    Таблица
    8.3.



    Логические операторы и функции MATLAB










    Работа операторов
    поясняется приведенными ниже примерами:



    Обратите внимание,
    что аргументами логических операторов могут быть числа и строки. При аргументах-числах
    логический нуль соответствует числовому нулю, а любое отличное от нуля число
    воспринимается как логическая единица. Для строк действует уже отмеченное правило
    — каждый символ строки представляется своим ASCII-кодом.






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




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




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




    Исключающее
    ИЛИ (EXCLUSIVE OR)




    Верно,
    если все элементы вектора равны нулю




    Верно,
    если все элементы вектора не равны нулю

    exclusive-OR — Глоссарий | CSRC

    Операция исключающее ИЛИ.
    Источник (и):

    FIPS 197
    под XOR

    FIPS 197
    под ⊕

    Поразрядное логическое «исключающее ИЛИ», где 0⊕ 0 = 0, 0⊕ 1 = 1, 1⊕ 0 = 1 и 1⊕ 1 = 0.Например: 01101⊕ 11010 = 10111.
    Источник (и):

    НИСТ СП 800-106
    под ⊕

    Побитовое исключающее ИЛИ. Математическая операция, которая определяется как:
    0⊕ 0 = 0
    0⊕ 1 = 1
    1⊕ 0 = 1 и
    1⊕ 1 = 0
    Источник (и):

    НИСТ СП 800-133
    [Заменено]
    под ⊕

    Поразрядная логическая операция, такая, что 1⊕ 1 = 0, 1 = 0 = 1, 0 = 0 = 0 и 0⊕ 1 = 1.Например, для строки A = 10 и строки B = 11, тогда A then B = (1⊕ 1) || (0⊕ 1) = 01.
    Источник (и):

    NIST SP 800-135 Ред. 1
    под ⊕

    XOR B эквивалентно A ⊕ B.См. Определение побитовой логической операции ⊕ выше.
    Источник (и):

    NIST SP 800-135 Ред. 1
    под XOR

    Побитовое сложение по модулю 2 двоичных векторов одинаковой длины.
    Источник (и):

    НИСТ СП 800-20
    под Exclusive-OR

    NIST SP 800-67 Ред. 2
    под Exclusive-OR

    NIST SP 800-67 Ред. 1
    [Заменено]
    под Exclusive-OR

    Поразрядное сложение по модулю 2 двух битовых строк одинаковой длины.
    Источник (и):

    NIST SP 800-38A
    под Exclusive-OR

    NIST SP 800-38B
    под Exclusive-OR

    NIST SP 800-38C
    под Exclusive-OR

    NIST SP 800-38D
    под Exclusive-OR

    NIST SP 800-38F

    Эксклюзив-ИЛИ.
    Источник (и):

    NIST SP 800-38D
    под XOR

    Математическая операция; символ, определяемый как: 0⊕ 0 = 0 1⊕ 0 = 1 0⊕ 1 = 1 1⊕ 1 = 0 Эквивалентно двоичному сложению без переноса.
    Источник (и):

    NIST SP 800-90A Ред. 1
    под Exclusive-or

    Операция исключающего ИЛИ (XOR), определяемая как побитовая арифметика по модулю 2 без переноса.
    Источник (и):

    NIST SP 800-56B Ред.2
    под Ꚛ

    Побитовое исключающее ИЛИ. Математическая операция, которая определяется как: 0 ⊕ 0 = 0, 0 ⊕ 1 = 1, 1 ⊕ 0 = 1 и 1 ⊕ 1 = 0
    Источник (и):

    NIST SP 800-133 Ред.1
    [Заменено]
    под ⊕

    NIST SP 800-133 Ред.2
    под ⊕

    Оператор исключающего ИЛИ (XOR), определенный как побитовая арифметика по модулю 2 без переноса.
    Источник (и):

    NIST SP 800-56B Ред. 1
    [Заменено]
    под ⊕

    интересных свойств эксклюзивного OR (XOR) — ML и статистика

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

    Давайте начнем с таблицы истинности Exclusive-OR () и biconditional:

    b a b a b
    0 0 0 1
    0 1 1 0
    1 0 1 0
    1 1 0 1

    Определение

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

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

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

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

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

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

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

    .

    Инверсия эксклюзивного OR

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

    , так как — используя уравнение. \ eqref {eq: definition}:

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

    Коммутативность дана и в обоих случаях:

    с

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

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

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

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

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

    , так как — с формулой.\ eqref {eq: inverseXOR}:

    Соответственно, это справедливо и для двусмысленного оператора.

    Преобразование одиночного операнда

    , так как — с формулой. \ eqref {eq: inverseXOR}:

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

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

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

    Находим следующее выражение:

    с — путем раскрытия а и б, с:

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

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

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

    Поскольку термины и не пересекаются, приведенное выше выражение упрощается до:

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

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

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

    и

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

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

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

    С уравнением \ eqref {eq: xorAbsurdum} у нас есть важное соотношение, которое гласит, что все операции OR в дизъюнктивной форме могут быть просто заменены на 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 :commutativeCommutative} к исходному отношению. Тогда вы почти закончили: вам просто нужно применить \ eqref {eq: replaceXOR} к или \ eqref {eq: replaceBiconditional} — в зависимости от того, какой оператор вы предпочитаете — и, наконец, у вас есть красивое представление, содержащее либо только XOR, либо только двусмысленные условия.

    Пример

    Заменяем бикусловия в XOR:

    и вставьте обратно в исходное уравнение:

    Электроника Булева алгебра

    Маркус Тилл

    Независимость от

    языков — что на самом деле означает Exclusive in XOR? Независимость от языка

    — что на самом деле означает Exclusive in XOR? — Переполнение стека

    Присоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.

    Спросил

    Просмотрено
    14к раз

    Может быть, это очевидно для всех, но может ли кто-нибудь объяснить, откуда XOR (или Exclusive-OR) получил свое название? Что на самом деле означает слово Exclusive ? Не то чтобы это имело значение, но это просто застряло в моей голове с утра.

      ИЛИ:
    0 0 0
    0 1 1
    1 0 1
    1 1 1
    
    XOR:
    0 0 0
    0 1 1
    1 0 1
    1 1 0
      

    Это «исключительно 0 для входов 1,1», «специальная версия ИЛИ» или что-то еще?

    Создан 05 мар.

    ЛегендаЛегенда

    4k109109 золотых знаков255255 серебряных знаков385385 бронзовых знаков

    2

    XOR — это «исключающее ИЛИ», потому что оно возвращает «истинное» значение 1 только в том случае, если два значения являются исключающими, т.е.е. они оба разные.

    Создан 05 мар.

    dlanoddlanod

    7,7777 золотых знаков4949 серебряных знаков8989 бронзовых знаков

    1

    Это то, что дети понимают как ИЛИ

    Вы можете иметь шоколад ИЛИ можете
    есть мороженое

    Но программист посчитал бы это наличием обоих!

    Q: «Хотите чаю или кофе?»
    Раздражающий программист, ответ = да

    Создан 07 мар.

    Мартин БеккетМартин Беккет

    90.4k2525 золотых знаков178178 серебряных знаков252252 бронзовых знака

    1

    Согласно Knuth в Vol. 4A TAOCP, Джордж Буль «… написал x + y для обозначения дизъюнкции, но он приложил все усилия, чтобы никогда не использовать это обозначение, если x и y не являются взаимоисключающими (не оба 1). При необходимости он написал x + (1- x) y, чтобы гарантировать, что результат дизъюнкции никогда не будет равен 2.«

    XOR — сложение с потерянными переносами.

    Создан 05 мар.

    dbasnettdbasnett

    10k22 золотых знака2222 серебряных знака3232 бронзовых знака

    2

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

    Создан 05 мар.

    zneakzneak

    1,900 22 золотых знака1111 серебряных знаков307307 бронзовых знаков

    1

    Это исходит из теории множеств.Учтите, что у вас есть два набора A и B и элемент, который может быть или не быть в этих наборах. Первый логический вход — истина, если элемент находится в наборе A. Второй логический вход — истина, если элемент находится в наборе B.

    Если элемент является «эксклюзивным» для одного набора (например, «не используется совместно» с другим), то оператор XOR вернет истину. Иллюстрация из википедии:

    Создан 05 марта ’11 в 22: 522011-03-05 22:52

    Вим КоененВим Коенен

    10k1212 золотых знаков149149 серебряных знаков237237 бронзовых знаков

    Exclusive в XOR означает именно то, что он говорит — одно из двух должно быть исключено.То есть либо одно, либо другое. Ни то, ни другое — только одно. По крайней мере так я понял 🙂

    Создан 05 марта ’11 в 22: 362011-03-05 22:36

    Тень

    9,36655 золотых знаков5454 серебряных знака8181 бронзовый знак

    Эксклюзив, как в «только один».«Другими словами, это« один из двух, но не оба ».

    Создан 05 марта ’11 в 22: 352011-03-05 22:35

    Макс.

    20.6k2929 золотых знаков9090 серебряных знаков159159 бронзовых знаков

    Сегодня я прочитал хороший пример «простого английского»:

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

    Хью Дарвен, «Введение в теорию реляционных баз данных», стр. 76.

    Создан 07 мар.

    один день

    50.7k1212 золотых знаков9191 серебряный знак132132 бронзовых знака

    Stack Overflow лучше всего работает с включенным JavaScript

    Ваша конфиденциальность

    Нажимая «Принять все файлы cookie», вы соглашаетесь с тем, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в ​​отношении файлов cookie.

    Принимать все файлы cookie

    Настроить параметры

    Функция XOR — формула, примеры, как использовать функцию XOR

    Что такое функция XOR?

    Функция XOR была введена в Excel 2013 и доступна в разделе «Логические функции Excel».Это логическая функция «исключающее ИЛИ». Для двух заданных логических операторов функция XOR вернет TRUE, если одно из операторов истинно, и FALSE, если оба оператора истинны. Если ни одно из утверждений не является истинным, он также возвращает FALSE.

    Формула

    = XOR (логический1, [логический2],…)

    Функция XOR включает следующие аргументы:

    Logical1, logic2 — Logical1 является обязательным аргументом, тогда как logical2 и последующие логические значения необязательны.

    Как использовать функцию XOR в Excel?

    Функция XOR, как упоминалось выше, возвращает логические результаты. Она предоставит следующие результаты в различных сценариях:

    В случае более чем двух логических операторов функция вернет:

    1. ИСТИНА — когда нечетное число аргументов оценивается как ИСТИНА;
    2. FALSE — Когда все утверждения ложны или когда общее количество утверждений ИСТИНА четное.

    Чтобы понять, как используется эта функция и как ее можно использовать, давайте рассмотрим несколько примеров:

    Пример 1

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

    Снимок экрана с результатами в Excel показан ниже:

    Пример 2

    Предположим, что в хоккейном турнире участвуют шесть международных команд. Каждая команда уже сыграла по две игры.У нас есть результаты их первых двух игр, и теперь мы хотим узнать, какая команда сыграет в третьей игре, исходя из следующих условий турнира:

    1. Команды, выигравшие обе игры, выходят в финал.
    2. Команды, проигравшие обе игры, выбывают из турнира.
    3. Команды, выигравшие только одну игру из двух, должны сыграть в третью игру, чтобы определить, какая команда перейдет в следующий раунд, а какая нет.

    Результаты первых двух игр следующие:

    Теперь, чтобы выяснить, должна ли команда играть в третью игру, мы можем использовать простую формулу = XOR (C5 = «Выиграли». , D5 = «Выиграл»).Однако мы также можем вложить его, используя формулу ЕСЛИ, как показано ниже:

    Мы получаем следующие результаты:

    Используемая здесь формула: = ЕСЛИ (XOR (B2 = ”Won », C2 =« Выигран »),« Да »,« Нет »). Таким образом, XOR упростил объединение команд.

    Обычно XOR используется вместе с другой логической функцией. Добавление формулы ЕСЛИ будет делать одно, если условие ИСТИНА, и другое, если условие ЛОЖЬ. Часто при использовании функции ИЛИ мы «вкладываем» ее в функцию ЕСЛИ.

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

    Что нужно помнить о функции XOR

    1. Функция XOR позволяет нам тестировать до 254 функций.
    2. XOR игнорирует пустые ссылки.
    3. #VALUE! ошибка будет возвращена, если логические значения не найдены.
    4. # ИМЯ! ошибка будет возвращена, если функция используется в версиях Excel до 2013.
    5. Аргументы должны оцениваться как логические значения, такие как ИСТИНА или ЛОЖЬ, или в массивах или ссылках, которые содержат логические значения.

    Щелкните здесь, чтобы загрузить образец файла Excel

    Дополнительные ресурсы

    Спасибо, что прочитали руководство CFI по важным функциям Excel! Потратив время на изучение и освоение этих функций, вы значительно ускорите свой финансовый анализ. Чтобы узнать больше, ознакомьтесь с этими дополнительными ресурсами CFI:

    • Функции Excel для FinanceExcel for Finance Это руководство по Excel для финансов научит 10 основных формул и функций, которые вы должны знать, чтобы стать отличным финансовым аналитиком в Excel.В этом руководстве есть примеры, скриншоты и пошаговые инструкции. В конце загрузите бесплатный шаблон Excel, который включает в себя все финансовые функции, описанные в руководстве
    • Расширенный курс формул Excel
    • Расширенные формулы Excel, которые вы должны знать Расширенные формулы Excel, которые необходимо знать навыки на новый уровень. Расширенные функции Excel
    • Ярлыки Excel для ПК и MacExcel Ярлыки ПК MacExcel Ярлыки — Список наиболее важных и распространенных ярлыков MS Excel для пользователей ПК и Mac, специалистов в области финансов и бухгалтерского учета.Сочетания клавиш ускоряют ваши навыки моделирования и экономят время. Изучите редактирование, форматирование, навигацию, ленту, специальную вставку, манипулирование данными, редактирование формул и ячеек и другие короткие статьи

    PostgreSQL: Документация: 13: 9.1. Логические операторы

    Доступны обычные логические операторы:

      логическое   И   логическое  логическое 
      логическое   ИЛИ   логическое  логическое 
      НЕ   логическое  логическое 
     

    SQL использует трехзначную логическую систему с истинным, ложным и пустым , что представляет «неизвестно».Обратите внимание на следующие таблицы истинности:

    a b a И b a OR b
    ИСТИНА ИСТИНА ИСТИНА ИСТИНА
    ИСТИНА ЛОЖЬ ЛОЖЬ ИСТИНА
    ИСТИНА ПУСТО ПУСТО ИСТИНА
    ЛОЖНО ЛОЖЬ ЛОЖЬ ЛОЖЬ
    ЛОЖНО ПУСТО ЛОЖЬ ПУСТО
    ПУСТО ПУСТО ПУСТО ПУСТО
    a НЕ a
    ИСТИНА ЛОЖЬ
    ЛОЖНО ИСТИНА
    ПУСТО ПУСТО

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

    Если задано значение «истина» (1) или «ложь» (0), значения и и | Операторы очень похожи на операторы && и || оператора. Фактически, один может использовать , и | во многих местах, что && и || используются. (В качестве упражнения убедитесь, что «логический» и «поразрядный» операторы приведут к одинаковому поведению при использовании с простыми значениями в операторе if .Вспомните, что , если рассматривает любое ненулевое значение как «истину».)

    Однако есть одно ключевое отличие: оценка короткого замыкания. Предположим, у вас есть две функции: f () и g () . Выражение f () && g () приведет к вызову g () только в том случае, если f () вернет «истинное» значение; если f () возвращает «ложь», то результат «ложь И что-нибудь» всегда ложно.

    Иногда желательно, чтобы вызывалась g () , даже если f () возвращает «false».Обычно это происходит потому, что g () имеет некоторый побочный эффект, который должен происходить независимо от f () . В этом случае можно либо a) присвоить возвращаемые значения переменным и использовать && или b) (и менее очевидно) использовать f () & g () , который не замыкает накоротко.

    Итак, && не оценивает свою правую часть, если левая часть ложна, потому что ложь И все всегда ложно. Аналогично || не оценивает RHS, если LHS истинно, потому что истинно ИЛИ что-либо всегда истинно..

    Поддержка

    Поддержка

    Вы используете устаревший браузер. Internet Explorer больше не поддерживается Xilinx.

    Просмотр документации

    Навигатор документации

    Documentation Navigator упрощает поиск нужных документов, изучение новых тем, локальную загрузку и многое другое.

    Вы ищете информацию о покупке через Xilinx или дистрибьютора Xilinx?

    • Xilinx предлагает полный набор устройств, средств проектирования, IP-ядер, устройств, плат для разработки и комплектов.Некоторые товары можно приобрести непосредственно в Интернете или через официальных дистрибьюторов.

    Знаете, какие проблемы поддерживаются Сервисным порталом?

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

    • Информация о наличии продукта, ценах, сроках выполнения заказа и окончании срока службы продукта.
    • Программное обеспечение и эталонные образцы старше двух последних основных выпусков. (например, если текущим выпуском является 2019.1, поддерживаются версии 2019.x и 2018.x, но не поддерживается 2017.x)
    • коммерческих версий PetaLinux старше двух последних основных выпусков. (например, если текущим выпуском является 2019.1, поддерживаются версии 2019.x и 2018.x, но не поддерживается 2017.x)
    • Подробный список исключений для встроенного ПО см. В Wiki поддержки встроенного ПО.
    • Программное обеспечение и IP-адрес установлены в неподдерживаемых операционных системах. См. Ответ Xilinx 18419.
    • Сторонние демонстрационные программы и платы для разработки. Обратитесь к стороннему поставщику за поддержкой.
    • Устройства и IP-адреса, используемые вне пределов технических данных или несовместимым с общими инструкциями в Руководстве пользователя. Модификации ядер, созданные Coregen, не поддерживаются.
    • Для получения помощи в дизайне или кодировании обратитесь к официальному дистрибьютору или торговому представителю.
    • Application Notes поддерживает не только воспроизведение конкретных условий и сценариев, представленных в них.
    • Сервисный портал доступен не всем клиентам
    • Сервисный портал

    • недоступен для студентов университетов, за исключением лиц, авторизованных в рамках университетской программы Xilinx. Для получения дополнительной информации см. Программу Университета Xilinx.

    Хотите узнать больше о возврате продуктов Xilinx?

    • Качество и надежность: Мы предлагаем нашим клиентам комплексные решения и услуги.Мы работаем вместе через партнерские отношения с клиентами, поставщиками, используя передовые системы, технологии и методы, а также полностью вовлекая сотрудников Xilinx в культуру постоянного совершенствования.
    • Возврат продукции: при необходимости мы предоставляем клиентам услуги по анализу отказов компонентов, чтобы помочь улучшить качество и надежность продукции Xilinx, а также продуктов и производственных процессов клиентов.

    У вас есть проблемы со входом на Сервисный портал?

    Для получения помощи в решении проблем с учетной записью Xilinx воспользуйтесь формой обратной связи на веб-сайте.

    Хотели бы вы сотрудничать со специалистами Xilinx для решения ваших проблем?

    Форумы сообщества Xilinx: онлайн-место для встреч пользователей Xilinx и экспертов по продуктам Xilinx с разделами, посвященными всем основным темам. Если вы не можете найти ответ, который ищете в другом месте, спросите Сообщество

    Вы ищете ответы и решения?

    • Центры решений. Многие продукты и технологии Xilinx имеют собственные центры решений.Это ведомые обзоры нашей технической документации и записи ответов. Начните поиск здесь, чтобы получить исчерпывающий обзор решений, доступных для вашего конкретного устройства, инструмента или IP-адреса.
    • Записи ответов

    • : Вопросы, проблемы и проблемы задокументированы как записи ответов в этой базе данных с точностью до минуты.
    • Поддержка поиска: вы можете легко уточнить результаты, сузив область поиска по типу документа, типу записи ответа, продуктам, процессу проектирования и многому другому.
    • Design Advisory: специальный класс Xilinx Answer Record, предназначенный для того, чтобы держать вас в курсе известных критических проблем и помогать в их решениях. Просмотрите записи ответов с рекомендациями по дизайну для своего устройства, чтобы избежать проблем и сэкономить время.

    Вам нужна последняя техническая документация?

    • Навигатор документации (DocNav): это автономный инструмент, доступный для загрузки, который поможет организовать соответствующую документацию Xilinx.Это лучший способ перейти к последней технической документации Xilinx и убедиться, что у вас есть самая последняя информация. Скачать
    • Подпишитесь на оповещения: оповещения — это электронные письма, которые рассылаются, чтобы уведомить вас об изменениях в документах, связанных с вашим дизайном. Вы можете подписаться на уведомления о документации по устройствам, инструментам дизайна, IP, платам и комплектам и многим другим темам.

    Хотите узнать больше о том, как проектировать с помощью продуктов Xilinx?