异或的常用性质

异或的定义

异或是一个数学运算符,它应用于逻辑运算与计算机中的位运算。

\(p\)\(q\) 为命题。\(p\)\(q\) 的异或是这样一个命题:当 \(p\)\(q\) 中恰好只有一个为真时命题为真,否则为假。\(p\) 异或 \(q\) 通常记作 \(p \ \text{xor}\ q\)\(p \oplus q\)。在编程语言中通常为 p^q

\(p\)\(q\) 两个值不相同,则异或结果为 \(1\)。如果 \(p\)\(q\) 两个值相同,异或结果为 \(0\),即异或的运算法则为:\(0 \oplus 0 = 0\)\(1 \oplus 0 = 1\)\(0 \oplus 1 = 1\)\(1 \oplus 1 = 0\)(同为 \(0\),异为 \(1\))。这种运算捕捉了输入位的“排他性”,即输入不能同时为真。

异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用 \(1\) 表示真,\(0\) 表示假,这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。

异或的性质

异或的一般性质

交换律

两个命题(或二进制数)进行异或运算时,交换它们的位置,结果不变:\(p \oplus q = q \oplus p\)

结合律

三个或多个值进行连续异或运算时,运算顺序不影响最终结果:\(p \oplus (q \oplus r) = (p \oplus q) \oplus r\)

恒等律

任意值与 \(0\) 进行异或运算,结果等于它本身:\(p \oplus 0 = p\)

归零律

任意值与自身进行异或运算,结果一定为 \(0\)\(p \oplus p = 0\)

对合运算

对同一个值连续两次异或(先与 $ q $ 异或,再与同一个 $ q $ 异或),相当于没有变化: \(p \oplus q \oplus q = p \oplus 0 = p\)

逆元

对于任何 bool 值 \(a\), 有 \(a \oplus 0 = a\)\(a \oplus a = 0\), 即对于异或操作,每一个 bool 值 \(a\) 的逆元就是它本身。

可逆性

\(A \oplus B = C\),则 \(A \oplus C = B\)\(B \oplus C = A\)

拓展性质

与、或、异之间的关系

\[a \oplus b = (a | b) - (a \& b) \]

\[a \oplus b = (a + b) - 2(a \& b) \]

\[a \oplus b = (\sim a) \oplus (\sim b) \]

与或的包含关系

\[A \oplus B = (A | B) - (A \& B) \]

\[A \& B = \frac{A + B - (A \oplus B)}{2} \]

和与异或的差值固定

和与异或的差是“进位值”的两倍:\((A + B) - (A \oplus B) = 2 \cdot (A \& B)\)

奇偶性与最低位独立

\[\text{lsb}(A \oplus B) = \text{lsb}(A) \oplus \text{lsb}(B) \]

其中 \(\text{lsb}(x)\) 表示最低位(\(0\)\(1\))。

奇偶个数定理

  • \(偶数 \oplus 偶数 = 偶数 \implies (2x) \oplus (2y) = 2(x\oplus y)\)
  • \(奇数 \oplus 奇数 = 偶数 \implies (2x +1) \oplus (2y+1) = 2(x\oplus y)\)
  • \(偶数 \oplus 奇数 = 奇数 \implies (2x) \oplus (2y + 1) = 2(x\oplus y) + 1\)

推论:多个数异或 ⟹ 结果为奇数当且仅当其中奇数个数为奇数。

数值界限

上限

对于两个整数 \(a, b\)\(a \oplus b \le a + b\),当 \(a \& b = 0\) 时等号成立。

下限

对于两个整数 \(a, b\)\(a \oplus b \ge |a - b|\)

其它性质与运用

找出现奇数次的数

给出一个数组,只有一个数出现奇数次,其余偶数次,求这个出现奇数次的数

全部异或一遍,即得该数,即:

\[ans = \bigoplus_{i=1}^{n} a_i \]

posted @ 2026-05-20 19:04  绪风ﺴﻬৡ  阅读(0)  评论(0)    收藏  举报
当前时间: