XOR(全称 Exclusive OR,中文常译为异或)是一种基础的逻辑运算和位运算。它的核心规则非常简洁:
两个输入值相同时结果为
0,不同时结果为1。
🔢 真值表
| A | B | A XOR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
📐 重要数学/逻辑性质
- 交换律:
a ⊕ b = b ⊕ a - 结合律:
(a ⊕ b) ⊕ c = a ⊕ (b ⊕ c) - 自反性:
a ⊕ a = 0(任何数与自身异或得 0) - 零元性:
a ⊕ 0 = a(任何数与 0 异或不变) - 可逆性:若
a ⊕ b = c,则a ⊕ c = b,b ⊕ c = a
💻 常见表示方式
- 数学/逻辑符号:
⊕ - 编程语言中(C/C++/Java/Python/JS 等):
^
例:5 ^ 3→ 二进制101 ^ 011 = 110→ 结果6
🛠 典型应用场景
- 位运算与算法:快速翻转特定位、统计奇偶性、无临时变量交换两数:c1
- 加密与解密:异或加密是最简单的对称加密之一(明文 ⊕ 密钥 = 密文,密文 ⊕ 密钥 = 明文)。
- 数据校验与冗余:奇偶校验位计算、RAID 5 的分布式校验块均依赖 XOR。
- 数字电路:半加器的“和(Sum)”输出就是 XOR 门实现的。
- 哈希与随机化:用于快速混合比特、生成伪随机序列等。
💡 记忆口诀
“相同为 0,不同为 1”
(对比普通 OR:只要有一个 1 结果就是 1;XOR 则“排斥”两个同时为 1 的情况,故称 Exclusive)
https://codeforces.com/contest/2218/problem/E
#include <bits/stdc++.h>
using namespace std;
void solve() {
int n;
cin >> n;
vector<int> a(n);
for (int &x : a) cin >> x; //学会用指针的方法读取input
int ans = 0;
for (int i = 0; i < n; ++i) {
for (int j = i; j < n; ++j) {
ans = max(ans, a[i] ^ a[j]);
}
}
cout << ans << '\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) solve();
return 0;
}
Leave a Reply
You must be logged in to post a comment.