离散数学:异或的基本性质

1 异或定义

异或是一种位运行,数学符号记作 \oplus,在程序中记为 ^,如 aba \oplus ba^b
异或满足以下运行规则:
00=001=110=111=0 0 \oplus 0 = 0\\ 0 \oplus 1 = 1\\ 1 \oplus 0 = 1\\ 1 \oplus 1 = 0
可以表示为下表,其中行和列分别为两数。

1 0
1 0 1
0 1 0

我们可以简单记忆为两数相同时返回0,不相同则返回1。

2 基本性质

设有两个 aabb 逻辑位,它们有以下性质:

  1. 交换律ab=baa \oplus b = b \oplus a
    \because 所有四种运算全部满足条件,\therefore 结论成立。
  2. 结合律(ab)c=a(bc)(a \oplus b) \oplus c = a \oplus (b \oplus c)
    a,b,ca,b,c 共有 23=82^3=8 种取值情况,分别讨论发现所有情况都满足要求,因此结论成立。
  3. 不变性a0=aa \oplus 0=a
    a=0a=0 时,00=00 \oplus 0 = 0
    a=1a=1 时,10=11 \oplus 0 = 1
    注意:a1=1a \oplus 1 = 1 不成立。
  4. 自毁性aa=0a \oplus a=0
    基本运算原则,相等为1。根据这个原则,结合保身性,我们很容易等到:xxx=xx \oplus x \oplus x = x,这个结论非常重要,在密码学中的对称加密中经常用到。
  5. 可替性:若 ab=ca \oplus b = c,则 ac=ba \oplus c = b(或 bc=ab \oplus c = a);
    证明: ab=c,ac=aab=0b=b\because a \oplus b = c, \therefore a \oplus c = a \oplus a \oplus b = 0 \oplus b = b,证毕(同理,可证bc=ab \oplus c = a)。

3 其他性质研究

计算机系统是基于二进制的存储系统,最基本的单元是位(bit),每个位只表示0或1,但是由于存储的便利,使用的是每8位为一个单元的字节byte,所以在下面的讨论中,都是基于字节的。由于更多的字节都是只是对单字节的重复, 所以主要以研究单字节为主。

3.2 基本定义

定义:求1函数 o=One(b)o = One(b),其中 OneOne 表示字节 b 中 1的个数,记为O(b)O(b)。定义 PO(b)=P(O(b))PO(b)=P(O(b))bb 超奇偶性,即 bb 中1的个数是奇数还是偶数。

几个函数的范围情况如下所示。

  • O(b):返回一个字节中1的个数。
    定义域:[0, 256)
    值域:[0, 8]
  • P(b):判断一个数的奇偶性
    定义域:[0, 256)
    值域:{ODD, EVEN} # 注:分别表示奇数和偶数。
  • PO(b):判断一个字节的超奇偶性
    定义域:[0, 256)
    值域:{ODD, EVEN}

3.1 PO(b)PO(b) 超奇偶性性质

定理1:设 ab=ca \oplus b=c,则 PO(a)PO(b)=PO(c)PO(a) \oplus PO(b) = PO(c)
证明:先考虑 aabb 只有一位的情况。此时,只有四种基本情况,如第1部分表格所示,这四种情况都成立,所以等式成立。由于各位之间都是独立的,所以当 aabb 为多位时,等式也成立。

根据这个结论,我们可以知两个相同的字节的超奇偶性不同时,其异或结果的超奇偶性相同。但是如果两者超奇偶性相同,则结果的超奇偶性不确定。

举例来说,若 b1b_1b2b_2 为两个相同长度的多位二进制数,两个数中1的总个数为 nn,设 b1b2=b3b_1 \oplus b_2 = b_3b3b_3 中的1的个数为 mm 个,那么 nnmm 的奇偶性是一样的。如 b1=01010101b_1=01010101b2=10101101b_2 = 10101101b3=11111000b_3=11111000,此时 n=9,m=5n=9, m = 5 都是奇数。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章