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 expression1
expression2
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 expression1
expression2
a . 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 False
az , eredményét False
adja 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.