Оператор Xor (Исключающая дизъюнкция)
 
Возвращает битовое XOR (Исключающая дизъюнкция) из двух числовых значений

Синтаксис

Declare Operator Xor ( ByRef lhs As T1, ByRef rhs As T2 ) As Ret

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

result = lhs Xor rhs

Параметры

lhs
Выражение слева.
T1
Любой числовой тип.
rhs
Выражение справа.
T2
Любой числовой тип.
Ret
Числовой тип (варьируется в зависимости от T1 и T2).

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

Возвращает битовый XOR двух операндов.

Описание

Этот оператор возвращает битовое исключение его операндов. Логическая операция, которая устанавливает значения битов в зависимости от битов операндов.

Таблица ниже демонстрирует все комбинации булевой операции исключения:

левый битправый бит результат
000
101
011
110


Нет ограниченного вычисления  - оба выражения всегда вычисляются.

Возвращаемый тип зависит от переданных типов значений. Byte, UByte и значения с плавающей точкой сначала преобразуются в Integer. Если левый и правый типы отличаются только знаковостью, то тип возвращаемого значения совпадает с левым типом (T1), в противном случае, больший из двух типов возвращается.

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

Пример

' Использование оператора XOR на два числовых значения
Dim As UByte numeric_value1, numeric_value2
numeric_value1 = 15 '00001111
numeric_value2 = 30 '00011110

'Результат =  17  =     00010001
Print numeric_value1 Xor numeric_value2
Sleep


Использование оператора XOR на два условных выражения
Dim As UByte numeric_value1, numeric_value2
numeric_value1 = 10
numeric_value2 = 15

If numeric_value1 = 10 Xor numeric_value2 = 20 Then Print "Numeric_Value1 equals 10 or Numeric_Value2 equals 20"
Sleep

' Это выведет "Numeric_Value1 равное 10 или Numeric_Value2 равное 20"
' в зависимости от выполняемого условия , которое задается в операторе IF


Различия диалектов

  • В диалекте -lang qb , этот оператор не может быть перегружен.

Отличия от QB

  • Нет

См. также