XOR 的原理与应用
Posted yexuesong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XOR 的原理与应用相关的知识,希望对你有一定的参考价值。
理论
对于命题 (p, q),(p) 异或 (q) 通常记作 (p XOR q) 或 (p oplus q)。在编程语言中,常写作 p ^ q
。
异或是 (mathbb{Z}_{2}) 群的加法运算,满足加法结合律和交换律。
应用
例一,利用其自反关系去交换 a, b 两个元素的值。
void swap(int *a, int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}
例如 a 为 101
,b 为 011
第一次异或得到的是 110
,其中 1 代表不同,0 代表相同
以第一次的结果作为「特征值」进行第二次异或,对 b 的每一位处理,特征为 1 则取反,特征为 0 则不变,即将 b 011
转换为 a 101
再用「特征值」对变成 a 的 b 进行异或,即可得到 b
例二,https://leetcode-cn.com/problems/missing-number/
给定一个包含 (0, 1, 2, cdots, n) 中 (n) 个数的序列,找出 (0 cdots n) 中没有出现在序列中的那个数。
int missingNumber(vector<int> &nums)
{
int res = nums.size();
for (int i = 0; i != nums.size(); ++i)
{
res ^= nums[i];
res ^= i;
}
return res;
}
以上是关于XOR 的原理与应用的主要内容,如果未能解决你的问题,请参考以下文章