海明碼(Hamming Code )編碼的關鍵是使用多餘的奇偶校驗位來識別一位錯誤。
碼字(Code Word) 按如下方法構建: 1、把所有2的冪次方的資料位標記為奇偶校驗位(編號為1, 2, 4, 8, 16, 32, 64等的位置) 2、其他資料位用於待編碼資料. (編號為3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17等的位置) 3、每個奇偶校驗位的值代表了程式碼字中部分資料位的奇偶性,其所在位置決定了要校驗和跳過的位元位順序。 位置1:校驗1位,跳過1位,校驗1位,跳過1位(1,3,5,7,9,11,13,15,…) 位置2:校驗2位,跳過2位,校驗2位,跳過2位 (2,3,6,7,10,11,14,15,…) 位置4:校驗4位,跳過4位,校驗4位,跳過4位 (4,5,6,7,12,13,14,15,20,21,22,23,…) 位置8:校驗8位,跳過8位,校驗8位,跳過8位(8-15,24-31,40-47,…) … 如果全部校驗的位置中有奇數個1,把該奇偶校驗位置為1;如果全部校驗的位置中有偶數個1,把該奇偶校驗位置為0. 舉例說明: 一個位元組的資料:10011010 構造資料字(Data Word),對應的校驗位留空_ _ 1 _ 0 0 1 _ 1 0 1 0 計算每個校驗位的奇偶性 ( ?代表要設定的位元位): 位置1檢查1,3,5,7,9,11: ? _ 1 _ 0 0 1 _ 1 0 1 0. 偶數個1,因此位置1設為0,即: 0 _ 1 _ 0 0 1 _ 1 0 1 0 位置2檢查2,3,6,7,10,11: 0 ? 1 _ 0 0 1 _ 1 0 1 0. 奇數個1,因此位置2設為1,即: 0 1 1 _ 0 0 1 _ 1 0 1 0 位置4檢查4,5,6,7,12: 0 1 1 ? 0 0 1 _ 1 0 1 0. 奇數個1,因此位置4設為1,即: 0 1 1 1 0 0 1 _ 1 0 1 0 位置8檢查8,9,10,11,12: 0 1 1 1 0 0 1 ? 1 0 1 0. 偶數個1,因此位置8設為0,即: 0 1 1 1 0 0 1 0 1 0 1 0 因此碼字為: 011100101010.
海明碼(Hamming Code )編碼的關鍵是使用多餘的奇偶校驗位來識別一位錯誤。
碼字(Code Word) 按如下方法構建: 1、把所有2的冪次方的資料位標記為奇偶校驗位(編號為1, 2, 4, 8, 16, 32, 64等的位置) 2、其他資料位用於待編碼資料. (編號為3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17等的位置) 3、每個奇偶校驗位的值代表了程式碼字中部分資料位的奇偶性,其所在位置決定了要校驗和跳過的位元位順序。 位置1:校驗1位,跳過1位,校驗1位,跳過1位(1,3,5,7,9,11,13,15,…) 位置2:校驗2位,跳過2位,校驗2位,跳過2位 (2,3,6,7,10,11,14,15,…) 位置4:校驗4位,跳過4位,校驗4位,跳過4位 (4,5,6,7,12,13,14,15,20,21,22,23,…) 位置8:校驗8位,跳過8位,校驗8位,跳過8位(8-15,24-31,40-47,…) … 如果全部校驗的位置中有奇數個1,把該奇偶校驗位置為1;如果全部校驗的位置中有偶數個1,把該奇偶校驗位置為0. 舉例說明: 一個位元組的資料:10011010 構造資料字(Data Word),對應的校驗位留空_ _ 1 _ 0 0 1 _ 1 0 1 0 計算每個校驗位的奇偶性 ( ?代表要設定的位元位): 位置1檢查1,3,5,7,9,11: ? _ 1 _ 0 0 1 _ 1 0 1 0. 偶數個1,因此位置1設為0,即: 0 _ 1 _ 0 0 1 _ 1 0 1 0 位置2檢查2,3,6,7,10,11: 0 ? 1 _ 0 0 1 _ 1 0 1 0. 奇數個1,因此位置2設為1,即: 0 1 1 _ 0 0 1 _ 1 0 1 0 位置4檢查4,5,6,7,12: 0 1 1 ? 0 0 1 _ 1 0 1 0. 奇數個1,因此位置4設為1,即: 0 1 1 1 0 0 1 _ 1 0 1 0 位置8檢查8,9,10,11,12: 0 1 1 1 0 0 1 ? 1 0 1 0. 偶數個1,因此位置8設為0,即: 0 1 1 1 0 0 1 0 1 0 1 0 因此碼字為: 011100101010.