1. 程式人生 > >漢明碼的理解

漢明碼的理解

全部 原來 進制 style font 例如 漢明碼 異或 數據傳輸

  1. 用於驗證傳輸二進制0101010101數據的正確性,並可以糾正1位。
  2. 例如原信息碼k為10101,添加海明碼k驗證
  3. 利用公式2^k - 1 >= n + k求出海明碼的長度k = 4(因為2^4 - 1>= 5+4 && 2^3 - 1 < 5+ 3所以需要4位校驗碼)
  4. 確定總長度是9位,在新編碼2^(k-1)k遞增位置占坑補0,確定漢明碼的位置。
  5. 其余坑位,按原來順序填充信息位。
  6. 將9位,轉換為二進制,倒數第一位等於1(1,3,5,7)的數據執行異或運算,並填充到效驗碼第1位。
  7. 轉換為二進制,倒數第二位等於1(10,11,110,111)的數據執行異或運算,並填充到效驗碼第2位。
  8. 轉換為二進制,倒數第三位等於1(100,101,110,111,1100)的數據執行異或運算,並填充到效驗碼第4位。
  9. 轉換為二進制,倒數第四位等於1(1000,1001,1011,1010)的數據執行異或運算,並填充到效驗碼第8位。
  10. 以上得到完整的漢明碼。
  11. 如何效驗數據的正確性?
  12. 執行以上異或運算,全部為0,則數據傳輸正確。0101則第5位發生錯誤。

漢明碼的理解