FEC之異或運算應用

2021-07-10 21:49:48 字數 846 閱讀 6528

話說為啥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)

校驗&恢復

校驗&恢復主要利用的了異或的第四條特性: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之異或運算應用

話說為啥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...

異或運算及其應用

異或是一種基於二進位制的位運算,用符號xor或者 表示,其運算法則是對運算子兩側數的每乙個二進位制位,同值取0,異值取1。它與布林運算的區別在於,當運算子兩側均為1時,布林運算的結果為1,異或運算的結果為0。交換律 a b b a 結合律 a b c a b c a b c d a b c 可以推出...

異或運算及其應用

異或是一種基於二進位制的位運算,用符號xor或者 表示,其運算法則是對運算子兩側數的每乙個二進位制位,同值取0,異值取1。它與布林運算的區別在於,當運算子兩側均為1時,布林運算的結果為1,異或運算的結果為0。交換律 a b b a 結合律 a b c a b c a b c d a b c 可以推出...