close

簡單來說,資料在傳送的時候可能會出錯,(7,4)漢明碼就是一種檢查錯誤的方法。之所以叫做(7,4)漢明碼是因為它會把原本的資料切成每4個一組,然後加入可以幫忙驗證資料的另外三碼,所以每組會變成7碼。舉例來說原本要傳送的資料是0101,我們把這四個數字用abcd來代表,另外要加入的三碼用xyz來代表,那麼

x=a ⊕ b ⊕ d

y=a c d

z=b c d

這裡的 ⊕ 叫做XOR,以這裡來說判斷方法超簡單,就是把用到 ⊕ 的數字全部加起來,如果是奇數就是1,偶數就是0

以0101為例

x=a ⊕ b ⊕ d=0 ⊕ 1 ⊕ 1=0 

y=a c d=0  0  1=1

z=b c d=1  0  1=0

所以最後的七碼就是0101010

那麼這種方法要怎麼判斷資料哪裡出錯呢? 我們再舉一個簡單的例子,假設我們收到的數字為0100110,已知abcd=0100,xyz=110。根據前面的算法

x=a ⊕ b ⊕ d=0 ⊕ 1 ⊕ 0=1

y=a c d=0  0  0=0

z=b c d=1  0  0=1

所以y跟z是錯的,這時候我們比對y跟z同時包含了哪些位數,c和d對吧,但是x也有包含d卻是對的,這就說明c是錯的,我們修正以後再算一次。

01100110

x=a ⊕ b ⊕ d=0 ⊕ 1 ⊕ 0=1

y=a c d=0  1  0=1

z=b c d=1  1  0=0

跟xyz完全一樣~ 就是這麼簡單。

 

arrow
arrow
    創作者介紹
    創作者 Worldexplorer 的頭像
    Worldexplorer

    worldexplorer

    Worldexplorer 發表在 痞客邦 留言(0) 人氣()