離散數學:異或的基本性質

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 都是奇數。

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