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


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

Обновлен: Ноябрь 2007

Выполняется логическое исключение с двумя выражениями 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

csw1x2a6.alert_note(ru-ru,VS.90).gifПримечание.

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

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

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

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

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

1

1

0

1

0

1

0

1

1

0

0

0

csw1x2a6.alert_note(ru-ru,VS.90).gifПримечание.

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

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

Типы данных

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

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

Перегрузка

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

Пример

В приведенном ниже примере используется оператор 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

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