異或運算法則

異或運算法則

  1. a ^ b = b ^ a
  2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
  3. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
  4. a ^ b ^ a = b.

異或運算

  1、異或是一個數學運算符。應用於邏輯運算。
  2、例如:真異或假的結果是真,假異或真的結果也是真,真異或真的結果是假,假異或假的結果是假。就是說兩個值相 異結果爲真。
  異或的運算方法是一個二進制運算:
  1^1=0
  0^0=0
  1^0=1
  0^1=1
  兩者相等爲0,不等爲1.

問題定義:有2n+1個數,只有一個單着,別的都是成對的,找出這個單着的數。比如:2 1 3 2 1。
答:異或計算,一趟搞定。時間複雜度o(n),答案爲3,因爲兩個相同的數異或爲0.

問題:1-1000放在含有1001個元素的數組中,只有唯一的一個元素值重複,其它均只出現一次。每個數組元素只能訪問一次,設計一個算法,將它找出來;不用輔助存儲空間,能否設計一個算法實現?

解答:
令,1^2^…^1000(序列中不包含n)的結果爲T
則1^2^…^1000(序列中包含n)的結果就是T^n。
T^(T^n)=n。
所以,將所有的數全部異或,得到的結果與1^2^3^…^1000的結果進行異或,得到的結果就是重複數。

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