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完全一樣~ 就是這麼簡單。
文章標籤
全站熱搜
留言列表