XOR异或

XOR(全称 Exclusive OR,中文常译为异或)是一种基础的逻辑运算和位运算。它的核心规则非常简洁:

两个输入值相同时结果为 0,不同时结果为 1

🔢 真值表

ABA XOR B
000
011
101
110

📐 重要数学/逻辑性质

  • 交换律a ⊕ b = b ⊕ a
  • 结合律(a ⊕ b) ⊕ c = a ⊕ (b ⊕ c)
  • 自反性a ⊕ a = 0(任何数与自身异或得 0)
  • 零元性a ⊕ 0 = a(任何数与 0 异或不变)
  • 可逆性:若 a ⊕ b = c,则 a ⊕ c = bb ⊕ c = a

💻 常见表示方式

  • 数学/逻辑符号:
  • 编程语言中(C/C++/Java/Python/JS 等):^
    例:5 ^ 3 → 二进制 101 ^ 011 = 110 → 结果 6

🛠 典型应用场景

  1. 位运算与算法:快速翻转特定位、统计奇偶性、无临时变量交换两数:c1
  2. 加密与解密:异或加密是最简单的对称加密之一(明文 ⊕ 密钥 = 密文,密文 ⊕ 密钥 = 明文)。
  3. 数据校验与冗余:奇偶校验位计算、RAID 5 的分布式校验块均依赖 XOR。
  4. 数字电路:半加器的“和(Sum)”输出就是 XOR 门实现的。
  5. 哈希与随机化:用于快速混合比特、生成伪随机序列等。

💡 记忆口诀

“相同为 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