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