C++中的XOR運(yùn)算符(^)主要用于按位異或操作。它接受兩個(gè)整數(shù)作為操作數(shù),并對(duì)它們的每個(gè)二進(jìn)制位執(zhí)行異或操作。如果兩個(gè)相應(yīng)的二進(jìn)制位相同,則結(jié)果為0,否則為1。
XOR運(yùn)算在C++中有多種用途,以下是一些常見(jiàn)的應(yīng)用場(chǎng)景:
#include <iostream>
int main() {
int plaintext = 0b1101;
int key = 0b1011;
int ciphertext = plaintext ^ key; // 0b0110
std::cout << "Plaintext: " << plaintext << std::endl;
std::cout << "Key: " << key << std::endl;
std::cout << "Ciphertext: " << ciphertext << std::endl;
return 0;
}
位操作和翻轉(zhuǎn):XOR運(yùn)算可以用于翻轉(zhuǎn)整數(shù)的某些位。例如,要將一個(gè)整數(shù)的最低有效位(LSB)翻轉(zhuǎn)為1,可以使用XOR運(yùn)算:n = n ^ 1
。
循環(huán)移位:XOR運(yùn)算可以用于實(shí)現(xiàn)循環(huán)移位操作。例如,將一個(gè)整數(shù)向右循環(huán)移位一位:n = n ^ (n >> 1)
。
判斷奇偶性:XOR運(yùn)算可以用于判斷一個(gè)整數(shù)的奇偶性。如果整數(shù)與1進(jìn)行XOR操作的結(jié)果為1,則該整數(shù)為奇數(shù);如果結(jié)果為0,則該整數(shù)為偶數(shù)。
#include <iostream>
int main() {
int number = 5;
if (number & 1) {
std::cout << number << " is odd." << std::endl;
} else {
std::cout << number << " is even." << std::endl;
}
return 0;
}
A ^ B
計(jì)算得到。請(qǐng)注意,XOR運(yùn)算具有以下性質(zhì):
a ^ b = b ^ a
(a ^ b) ^ c = a ^ (b ^ c)
a ^ a = 0
和 a ^ 0 = a
a ^ b = c
則 a ^ c = b
和 b ^ c = a
這些性質(zhì)使得XOR運(yùn)算在C++中具有廣泛的應(yīng)用。