Megosztás a következőn keresztül:


Xor operátor (Visual Basic)

Logikai kizárást hajt végre két Boolean kifejezésen, vagy bitenkénti kizárást két numerikus kifejezésen.

Syntax

result = expression1 Xor expression2  

Részek

result
Szükséges. Bármely Boolean vagy numerikus változó. Logikai összehasonlítás esetén result két érték logikai kizárása Boolean (kizárólagos logikai feloldása). Bitenkénti műveletek esetén egy numerikus érték, result amely két numerikus bitminta bitenkénti kizárását (kizárólagos bitenkénti kizárását) jelöli.

expression1
Szükséges. Bármely Boolean vagy numerikus kifejezés.

expression2
Szükséges. Bármely Boolean vagy numerikus kifejezés.

Megjegyzések

Logikai összehasonlítás esetén a ha és csak akkor van, result ha pontosan az egyikexpression1, és expression2 kiértékeli aztTrue.True Vagyis ha és csak akkor, és expression1expression2 az ellenkező Boolean értékeket értékeli ki. Az alábbi táblázat a meghatározás módját result mutatja be.

Ha expression1 igen, És expression2 van Az érték a következő result :
True True False
True False True
False True True
False False False

Feljegyzés

Logikai összehasonlítás esetén az Xor operátor mindig mindkét kifejezést kiértékeli, ami magában foglalhatja az eljáráshívásokat is. Nincs rövidzárlatú megfelelője Xor, mert az eredmény mindig mindkét operandustól függ. A rövidzárolású logikai operátorokért lásd: AndAlso operátor és OrElse Operátor.

Bitenkénti műveletek esetén az Xor operátor két numerikus kifejezésben hajtja végre az azonos pozícióban lévő bitek bitenkénti összehasonlítását, és a megfelelő bitet az alábbi táblázat szerint állítja be result .

Ha a bit be van expression1 És a bit be expression2 van A bit be van result
0 0 0
0 0 0
0 0 0
0 0 0

Feljegyzés

Mivel a logikai és bitenkénti operátorok elsőbbsége alacsonyabb, mint más aritmetikai és relációs operátoroké, a pontos végrehajtás érdekében a bitenkénti műveleteket zárójelben kell megadni.

Az 5 Xor 3 például 6. Ennek okának megtekintéséhez konvertálja az 5-öt és a 3-at bináris reprezentációkká, a 101-et és a 011-et. Ezután az előző táblával állapítsa meg, hogy a 101 Xor 011 110, ami a 6 tizedesjegy bináris ábrázolása.

Adattípusok

Ha az operandusok egy Boolean kifejezésből és egy numerikus kifejezésből állnak, a Visual Basic numerikus értékké alakítja a Boolean kifejezést (–1 és True 0 ) Falseés bitenkénti műveletet hajt végre.

Összehasonlításként Boolean az eredmény adattípusa a következő Boolean: . A bitenkénti összehasonlításhoz az eredmény adattípusa egy numerikus típus, amely megfelel az és expression1expression2a . Lásd a "Relációs és bitenkénti összehasonlítások" táblát az operátoreredmények adattípusaiban.

Túlterhelés

Az Xor operátor túlterhelhető, ami azt jelenti, hogy egy osztály vagy struktúra újradefiniálta a viselkedését, ha egy operandus az adott osztály vagy struktúra típusával rendelkezik. Ha a kód egy ilyen osztályon vagy struktúrán használja ezt az operátort, győződjön meg arról, hogy tisztában van az újradefiniált viselkedésével. További információ: Operátori eljárások.

1. példa

Az alábbi példa az operátort használja a Xor logikai kizárás (kizárólagos logikai tiltás) végrehajtására két kifejezésen. Az eredmény egy Boolean olyan érték, amely azt jelzi, hogy pontosan az egyik kifejezés van-e 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

Az előző példa a , Trueés Falseaz , eredményét Falseadja eredményül.

2. példa

Az alábbi példa az operátort használja a Xor logikai kizárás (kizárólagos logikai tiltás) végrehajtására két numerikus kifejezés egyes bitjeire. Az eredményminta bitje akkor van beállítva, ha az operandusok megfelelő bitjei közül pontosan az egyik 1 értékre van állítva.

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

Az előző példa 2, 12 és 14 eredményt ad.

Lásd még