FEC之异或运算应用
話說為啥FEC需要異或( ^/⊕?)操作呢?
異或:xor
異或運算規則:
 0 xor 0 = 0
 0 xor 1 = 1
 1 xor 0 = 1
 1 xor 1 = 0
異或運算特性:
 1). a xor a = 0
 2). a xor 0 = a
 3). (a xor b) xor c = a xor (b xor c)
4). IF a xor b = c THEN a xor c = b ??
 異或的運算特性有兩點很好的應用
查找
 case 1:
 一個數組,除了其中一個元素,其他元素都為空,如何找到這個元素?
 對數組所有元素做異或的結果即為這個元素
 利用了異或運算特性的1)、2)、3)
case 2:
給一個很大的數組,里面有兩個數只出現過一次,其他數都出現過兩次,把這兩個數找出來?
這個case復雜一些,有興趣的同學可以參考:一個百度的面試題目
校驗&恢復
校驗&恢復主要利用的了異或的第四條特性:IF a xor b = c THEN a xor c = b?
一個很好的應用實例是RAID5
簡單描述下:
使用3塊磁盤(A、B、C)組成RAID5陣列,當用戶寫數據時,將數據分成兩部分,分別寫到磁盤A和磁盤B
A xor B的結果寫到磁盤C
當讀取A的數據時,通過B xor C可以對A的數據做校驗
當A盤出錯時,通過B xor C也可以恢復A盤的數據
RAID5的實現比上述的描述復雜多了,有興趣的同學看下RAID5
總結
以上是生活随笔為你收集整理的FEC之异或运算应用的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 红帽发布了下一代OpenShift On
- 下一篇: Android解析WindowManag
