計算機校驗碼的思考 挖掘之三

2021-07-24 11:18:05 字數 1405 閱讀 4147

校驗碼是用來校驗計算機部件之間交換的資料正確性。

但是為什麼說計算機中乙個傳輸錯誤在乙個校驗單元中最多有乙個,很少出現兩個以上的錯位呢?

通常來說計算機部件之間資料傳輸的可靠性是很高的,假設是99%以上的正確率。為了表示的更清楚,我們就假設錯位率為1%。這樣的話,在乙個位元組中,有7位是可以用來傳輸真實資料的,有兩位的錯位的概率大概是1%*1%這個數量級的。我們大概要傳輸上千個位元組才會遇到這麼乙個奇葩,讓它逃脫。因此各種校驗碼機制中才會設定出現乙個校驗資料段只檢測出乙個錯位的這種機制,然後才會有後面的校驗碼機制。

奇偶校驗碼

奇/偶校驗是資料傳送時採用的一種校正資料錯誤的一種方式,分為奇校驗和偶校驗兩種。

如果是採用奇校驗,在傳送每乙個資料(一般是1個位元組)的時候另外附加一位作為校驗位,當實際資料中1的個數為偶數的時候,這個校驗位就是1。否則,這個校驗位就是0,這樣就可以保證傳送資料滿足奇校驗的要求。在接收方收到資料時,將按照奇校驗的要求檢測資料中1的個數,如果是奇數,表示傳送正確。否則,表示傳送錯誤。

偶校驗的過程和奇校驗的過程一樣,只是檢測資料中1的個數為偶數。當實際資料中1的個數為偶數的時候,這個校驗位就是0,否則這個校驗位就是1。這樣,就可以保證傳送資料滿足偶校驗的要求。在接收方收到資料時,將按照偶校驗的要求檢測資料中1的個數,如果是偶數個1,表示傳送正確。否則,表示傳送錯誤。

這樣才會明白奇偶校驗是解決了全部問題的大部分,只留下少部分。當傳輸的樣本足夠小的時候,它的校驗能力會得到很高的體現。

海明碼

海明碼是奇偶校驗的另一種擴充,和奇偶校驗不同之處在於海明碼採用多位校驗碼的方式,在資訊資料位中合理加入校驗位,將碼距均勻拉大,校驗位中的每一位都對不同的資訊資料位進行奇偶校驗,通過合理地安排每個校驗位對原始資料進行校驗位組合,可以達到發現錯誤,糾正錯誤的目的。

海明碼是利用在資訊位為k位,增加r位冗餘位,構成乙個n=k+r位的碼字,然後用r個監督關係式產生的r個校正因子來區分無錯和在碼字中的n個不同位置的一位錯。它必需滿足關係式:2r³n+1或2r³k+r+1。

海明碼的編碼規則:在一般情況下,校驗碼會被插入到資料的1,2,4,8,…,2n位置,那麼,在資料生成時,按照提供的海明校驗方程計算出b1,b2,b4,…,bn各位,在資料校驗時,按照海明檢驗方程進行計算,如果所有的方程式計算都為0,則表示資料是正確的。如果出現1位錯誤,則至少有乙個方程不為0。海明碼的特殊之處在於,只要將①②③三個方程左邊計算資料按③②①排列,得到的二進位制數值就是該資料中出錯的位,例如第6位出錯,則③②①為110為二進位制數6。

當出現兩位錯誤時,這種海明碼能夠查錯,但無法糾錯。它比奇偶校驗好在可以糾錯了,不僅僅只是查錯。

迴圈冗餘校驗

參考高等代數的多項式除法問題,這裡重點的是除數多項式的生成。

c(n,k)  資訊碼佔k位,校驗碼佔n-k位。當校驗碼比較長的時候可以糾錯,當校驗碼短的時候,傳輸效率提高,無法糾錯。但是檢錯i的基本能力仍然存在。

計算機組成 校驗碼

crc校驗及其應用 海明校驗及其實現 同一編碼中,任意兩個合法編碼之間不同二進位制位數的最小值 例 0011與0001的碼距為1,一位錯誤無法識別 校驗碼中增加冗餘位的目的就是增加碼距 碼距與檢查或糾錯能力的關係 1 碼距 e 1 可檢測e個錯誤 2 碼距 2t 1 可糾正t個錯誤 3 碼距 e t...

計算機校驗碼分類及原理

由於元件故障和雜訊干擾等因素常常導致計算機在處理資訊的過程中出現錯誤。為了防止資訊在傳輸過程的錯誤,將訊號採用專門的邏輯電路進行編碼以檢測錯誤,甚至校正錯誤。通常的方法是在每個字上新增一些校驗位,用來確定字中出現錯誤的位置。在計算機中有三種常見的檢驗碼,分別是 奇偶校驗碼,海明校驗碼,迴圈冗餘碼 1...

計算機網路 鏈路層 CRC校驗碼

我們在大學 計算機網路 或者是 計算機組成原理 中學過crc校驗碼。做個總結。不想看原理直接翻到例子那裡,簡潔明瞭。迴圈冗餘校驗碼,是眾多校驗碼中的一種,是用來校驗傳送過來的資料是否被修改過的碼。他們的簡單工作原理,可以用乙個10進製的不嚴謹例子表示。首先接收方和傳送方要共同約定,傳送的數字都能被3...