Поделиться через


Оператор Xor (Visual Basic)

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

result = expression1 Xor expression2

Части

  • result
    Обязательный.Какая-либо переменная типа Boolean или числового типа.При логическом сравнении result является логическим исключением (исключающая логическая дизъюнкция) из двух значений типа Boolean.При битовом сравнении result является числовым значением, представляющим побитовое исключение (исключающая побитовая дизъюнкция) из двух числовых битовых шаблонов.

  • expression1
    Обязательный.Произвольное выражение типа Boolean или числового типа.

  • expression2
    Обязательный.Произвольное выражение типа Boolean или числового типа.

Заметки

При логическом сравнении result равен True только в том случае, если одно из expression1 и expression2 имеет значение True.То есть только в том случае, если expression1 и expression2 имеют противоположные значения типа Boolean.В следующей таблице показан порядок определения результата result.

Если expression1 имеет значение

И выражение expression2 имеет значение

значение result будет следующим:

True

True

False

True

False

True

False

True

True

False

False

False

ПримечаниеПримечание

При логическом сравнении оператор Xor всегда вычисляет оба выражения, которые могут включать вызовы процедур.Не выполняется сокращенное вычисление эквивалентной величины для Xor, поскольку результат всегда зависит от обоих операндов.Сведения о логических операторах сокращенного вычисления см. в разделах Оператор AndAlso (Visual Basic) и Оператор OrElse (Visual Basic).

При побитовых операциях оператор Xor выполняет поразрядное сравнение одинаково расположенных битов в двух числовых выражениях и задает соответствующий бит в элементе result согласно следующей таблице:

Если бит в expression1 имеет значение

И бит в expression2 имеет значение

Бит в result имеет значение

1

1

0

1

0

1

0

1

1

0

0

0

ПримечаниеПримечание

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

Например, 5 Xor 3 равняется 6.Чтобы убедиться в этом, преобразуйте 5 и 3 в двоичные представления — 101 и 011.Затем воспользуйтесь предыдущей таблицей, чтобы определить, что 101 Xor 011 равняется 110, что является двоичным представление числа 6.

Типы данных

Если операнды состоят из одного выражения типа Boolean и одного числового выражения, Visual Basic преобразует выражение типа Boolean в числовое значение (–1 для True и 0 для False) и выполняет битовую операцию.

Для сравнения Boolean используется тип данных результата Boolean.Тип данных результата для побитового сравнения является числовым типом, соответствующим типам данных expression1 и expression2.См. таблицу "Относительное и побитовое сравнение" в разделе Типы данных результатов оператора (Visual Basic).

Перегрузка

Оператор Xor может быть перегружен; это означает, что класс или структура может переопределить его поведение, если операнд имеет тип соответствующего класса или структуры.Если в коде используется этот оператор для такого класса или структуры, убедитесь, что его переопределенное поведение вам понятно.Дополнительные сведения см. в разделе Процедуры операторов (Visual Basic).

Пример

В приведенном ниже примере используется оператор Xor для выполнения логического исключения (исключающая логическая дизъюнкция) для двух выражений.Результатом является значение типа Boolean, которое указывает, в точности ли одно из выражений имеет значение True.

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b Xor b > c
secondCheck = b > a Xor b > c
thirdCheck = b > a Xor c > b

В предыдущем примере получаются результаты False, True и False соответственно.

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

Dim a As Integer = 10 ' 1010 in binary
Dim b As Integer = 8  ' 1000 in binary
Dim c As Integer = 6  ' 0110 in binary
Dim firstPattern, secondPattern, thirdPattern As Integer
firstPattern = (a Xor b)  '  2, 0010 in binary
secondPattern = (a Xor c) ' 12, 1100 in binary
thirdPattern = (b Xor c)  ' 14, 1110 in binary

В предыдущем примере получаются результаты 2, 12 и 14 соответственно.

См. также

Ссылки

Логические (побитовые) операторы (Visual Basic)

Порядок применения операторов в Visual Basic

Список операторов, сгруппированных по функциональному назначению (Visual Basic)

Основные понятия

Логические и побитовые операторы в Visual Basic