奇偶校驗碼是一種開銷最小,能發現數據代碼中一位出錯情況的編碼,常用于存儲器讀寫檢查,或ASCII字符、其它類型信息傳送過程中的出錯檢查。它的實現原理,是使原來合法編碼碼距由1增加到2。若合法編碼中有一個二進制位的值出錯了,由1變成0,或由0變成1,這個碼必將成為非法編碼。實現的具體方法,通常是為一個字節補充一個二進制位,稱為校驗位,通過設置校驗位的值為0或1的方式,使字節自身的8位和該校驗位含有1值的位數一定為奇數或偶數。在使用奇數個1的方案進行校驗時,稱為奇校驗,反之則稱為偶校驗。依據八位的數據位中為1值的個數確定校驗位的值,是由專設的線路實現的。例如,當要把一個字節的值寫進主存時,首先用此電路形成校驗位的值,然后將這9位的代碼作為合法數據編碼寫進主存。當下一次讀出這一代碼時,再用相應線路檢測讀出9位碼的合法性。若在主存寫進、存儲、或讀出的過程中,某一個二進制位上出現錯誤,得到的9位碼必變成非法編碼,從而發現一定是哪一位上出現了錯誤。這種方案只能發現一位錯或奇數個位出錯,但不能確定是哪一位錯,也不能發現偶數個位出錯。考慮到,一位出錯的概率比多位同時出錯的概率高得多,該方案還是有很好的實用價值。 下面給出對幾個字節值的奇偶校驗的編碼結果:
數據 奇校驗的編碼 偶校驗的編碼
00000000 100000000 000000000
01010100 001010100 101010100
01111111 001111111 101111111
11111111 111111111 011111111
該例子中,碼字的最高一位為校驗位,其余低八位為數據位。從中可以看到,校驗位的值取0還是1,是由數據位中1的個數、是奇校驗還是偶校驗方案共同決定的。
評論