Translate

星期二, 8月 07, 2012

同位元碼

同位 parity (從拉丁文paritas而來, 是相等的意思)在計算機領域是指一種檢查資料在經過搬移儲存或傳輸時是否發生錯誤或被修改的技術.






在序列傳輸的同位元碼, 是在原來資料外再多傳送一個位元. 此位元僅用來判定資料在接收端是否正確. 底下以偶同位元來說明:  一開始在傳送端會先算資料為 '1' 的位元總數, 如果是奇數, 同位元碼就為 '1', 這樣在接收端, 所有資料包含同位元碼為'1'的總數如果是偶數就是正確, 若是奇數就有可能有某一位元應是 '1'卻變為'0' 或是應是 '0'卻變為'1'.





如:





'A' = 41(十六進位) = 0010 0001 (二進位) 有兩個'1' (偶數) 所以同位元碼為 '0', 傳送資料為 0010 0001 0





'W' = 57(十六進位) = 0101 0111 (二進位) 有5個'1' (奇數) 所以同位元碼為 '1'. 傳送資料為 0101  0111 1











假設在傳送'A'過程中, 突然一個雜訊干擾, 接收端收到了 0010 1001 0 的訊號, 由於'1'的總和為3是奇數, 因此接收端知道這個資料是錯的.











奇同位元的原理應該可以依此類推.










同位元的原理很簡單, 就是假設發生傳輸問題時只有一個位元會出錯. 不過你應該可以發現它的限制:





當剛好有兩個, (或偶數個位元) 同時發生錯誤時, 奇數還是奇數, 偶數還是偶數, 接收端就會認為沒有錯誤. 如:



傳送'A' 0010 0001 0 結果收到 0010 0010 0, 接收端會以為送的是 'B' (42H) 而不知錯誤.

沒有留言: