Operator Xor (Visual Basic)

Melakukan pengecualian logis pada dua ekspresi Boolean, atau pengecualian per bit pada dua ekspresi numerik.

Sintaks

result = expression1 Xor expression2  

Generator

result
Harus diisi. Variabel Boolean atau numerik apa pun. Untuk perbandingan Boolean, result adalah pengecualian logis (disjungsi logis eksklusif) dari dua nilai Boolean. Untuk operasi per bit, result adalah nilai numerik yang mewakili pengecualian per bit (disjungsi per bit eksklusif) dari dua pola bit numerik.

expression1
Harus diisi. Ekspresi Boolean atau numerik apa pun.

expression2
Harus diisi. Ekspresi Boolean atau numerik apa pun.

Keterangan

Untuk perbandingan Boolean, result adalah True jika dan hanya jika tepat salah satu dari expression1 dan expression2 mengevaluasi ke True. Artinya, jika dan hanya jika expression1 dan expression2 mengevaluasi ke nilai Boolean yang berlawanan. Tabel berikut ini menggambarkan bagaimana result ditentukan.

Jika expression1 adalah Dan expression2 adalah Nilai dari result adalah
True True False
True False True
False True True
False False False

Catatan

Dalam perbandingan Boolean, operator Xor selalu mengevaluasi kedua ekspresi, yang dapat mencakup melakukan panggilan prosedur. Tidak ada sirkuit pendek lain ke Xor, karena hasilnya selalu tergantung pada kedua operand. Untuk operator logis sirkuit pendek, lihat Operator AndAlso dan Operator OrElse.

Untuk operasi per bit, operator Xor melakukan perbandingan per bit yang diposisikan secara identik dalam dua ekspresi numerik dan mengatur bit yang sesuai dalam result berdasarkan tabel berikut.

Jika bit dalam expression1 adalah Dan bit dalam expression2 adalah Bit dalam result adalah
1 1 0
1 0 1
0 1 1
0 0 0

Catatan

Karena operator logis dan per bit memiliki prioritas yang lebih rendah daripada operator aritmetika dan relasi lainnya, operasi per bit apa pun harus diapit dalam tanda kurung untuk memastikan eksekusi yang akurat.

Misalnya, 5 Xor 3 adalah 6. Untuk mengetahui mengapa demikian, konversikan 5 dan 3 ke representasi binernya, yaitu 101 dan 011. Kemudian gunakan tabel sebelumnya untuk menentukan bahwa 101 Xor 011 adalah 110, yang merupakan representasi biner dari desimal angka 6.

Jenis Data

Jika operand terdiri dari satu ekspresi Boolean dan satu ekspresi numerik, Visual Basic akan mengonversi ekspresi Boolean menjadi nilai numerik (–1 untuk True dan 0 untuk False) dan melakukan operasi per bit.

Sebagai perbandingan Boolean, jenis data dari hasilnya adalah Boolean. Untuk perbandingan bitwise, jenis hasil data adalah jenis numerik yang sesuai untuk jenis data expression1 dan expression2. Lihat tabel "Perbandingan Relasi dan Per Bit" di Jenis Data Hasil Operator.

Kelebihan beban

Operator Xor dapat kelebihan beban, yang berarti bahwa kelas atau struktur dapat mendefinisikan ulang perilakunya saat operand memiliki jenis kelas atau struktur tersebut. Jika kode Anda menggunakan operator ini pada kelas atau struktur seperti itu, pastikan Anda memahami perilakunya yang didefinisikan ulang. Untuk informasi lebih lanjut, lihat Prosedur Operator.

Contoh 1

Contoh berikut menggunakan operator Xor untuk melakukan pengecualian logis (disjungsi logis eksklusif) pada dua ekspresi. Hasilnya adalah nilai Boolean yang mewakili apakah tepat salah satu ekspresinya adalah True atau tidak.

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

Contoh sebelumnya memberikan hasil masing-masing False, True, dan False.

Contoh 2

Contoh berikut menggunakan operator Xor untuk melakukan pengecualian logis (disjungsi logis eksklusif) pada dua bit individu dari dua ekspresi numerik. Bit dalam pola hasil akan diatur jika tepat salah satu bit yang sesuai dalam operand diatur ke nilai 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

Contoh sebelumnya mengeluarkan hasil masing-masing 2, 12, dan 14.

Lihat juga