三、迴圈冗餘校驗碼(cyclic redundancy check)
它是一種檢錯碼。能發現**中一位出錯的情況,因為其利用的是編碼中1的個數的奇偶性作為依據,所以不能發現偶數字錯誤。
假設校驗位個數為 r,則它能表示 2r
個資訊,用其中乙個資訊表示「沒有出錯」,其餘 2r-1 個資訊指出錯誤發生在哪一位,然後錯誤也可能發生在校驗位,因此只有 k = 2r -1-r 個資訊能用於糾正被傳送資料的位數,也就是說要滿足關係式:
2 r⩾
k+r+
1\geqslant k + r + 1
2r⩾k+r
+1資訊 n 位,假設校驗位 k 位,總共會有2k 種情形,除了一種正確的情況,其餘2k - 1 要能滿足編碼後的資料位數。即 2k -1 ⩾
\geqslant
⩾ n + k
假設資訊位為 1010
資訊位有4位, 可以得出校驗位k=3,設資訊位d
4d_4
d4d
3d_3
d3d
2d_2
d2d
1d_1
d1,校驗位
p
3p_3
p3p
2p_2
p2p
1p_1
p1,那麼對應的海明碼為h
7h_7
h7h
6h_6
h6h
5h_5
h5h
4h_4
h4h
3h_3
h3h
2h_2
h2h
1h_1
h1規定:校驗碼 p
ip_i
pi 放在海明碼 2i-1 的位置上,資訊位按順序放在其餘位置
如圖:
h
7h_7
h7h
6h_6
h6h
5h_5
h5h
4h_4
h4h
3h_3
h3h
2h_2
h2h
1h_1
h1d
4d_4
d4d
3d_3
d3d
2d_2
d2p
3p_3
p3d
1d_1
d1p
2p_2
p2p
1p_1
p1101
0d1 (在第3位): 0 1 1(3)
d2 (在第5位): 1 0 1 (5)
d3 (在第6位): 1 1 0(6)
d4 (在第7位): 1 1 1(7)
從右至左豎著看:
p1 = d1 ⊕
\oplus
⊕ d2 ⊕
\oplus
⊕ d4 = 0 ⊕
\oplus
⊕ 1 ⊕
\oplus
⊕ 1 = 0
p2 = d1 ⊕
\oplus
⊕ d3 ⊕
\oplus
⊕ d4 = 0 ⊕
\oplus
⊕ 0 ⊕
\oplus
⊕ 1 = 1
p3 = d2 ⊕
\oplus
⊕ d3 ⊕
\oplus
⊕ d4 = 1 ⊕
\oplus
⊕ 0 ⊕
\oplus
⊕ 1 = 1
於是:h
7h_7
h7h
6h_6
h6h
5h_5
h5h
4h_4
h4h
3h_3
h3h
2h_2
h2h
1h_1
h1d
4d_4
d4d
3d_3
d3d
2d_2
d2p
3p_3
p3d
1d_1
d1p
2p_2
p2p
1p_1
p1101
1010
檢驗方程:
當接收到:1010010,可計算得出:
s1=0
s2=0
s3=0
當接收到:1010000
s1=0
s2=1
s3=0
說明第010位出錯,即第2位出錯
資料的傳送方、接收方約定乙個除數
k個資訊為+r個校驗位作為「被除數」,新增校驗位後需保證除法的餘數為0
收到資料後,進行除法檢查餘數是否為0,若餘數非0則說明出錯,則進行重傳或者糾錯
設生成多項式是g(x)=x3+x2+1,資訊碼為101001,求對應的crc碼
1、 確定k、r以及生成多項式對應的二進位製碼
k=資訊碼的長度=6
r=生成多項式的最高次冪=3
校驗碼的位數n=k+r=9
生成多項式g(x)= 1 * x3 + 1 * x2+ 0 * x1+ 1 * x0,對應二進位製碼 1101
2、移位
為了確定最低位r位的校驗位,將資訊碼左移r位,低位先補0
101001000
3、相除
對移位後的資訊碼,用生成多項式進行模2除法,產生餘數
得到的crc碼:101001 001
4、檢錯和糾錯
傳送:101001001 記為c9c
8c7c
6c5c
4c3c
2c1c_c_c_c_c_c_c_c_c_
c9c8
c7c
6c5
c4
c3c
2c1
接收:101001001 用 1101 進行模2除,餘數為000,代表沒有出錯
接收:101001011 用1101 進行模2除,餘數為010,代表
出錯位有可能是第2位或者第9位,說明crc碼不具備糾錯能力。
若生成多項式選擇得當,且 2r⩾
k+r+
12^r\geqslant k+r+1
2r⩾k+r
+1,則crc碼可糾正1位錯。
理論上,crc碼可以:
校驗碼 奇偶校驗碼
1.奇偶校驗碼 通過在編碼中增加一位校驗位來使編碼中1的個數為奇數或者偶數,校驗位可以在原編碼的前面或者後面加。通過加入校驗位後的1個數是奇數還是偶數,可分為兩種 奇校驗 1的個數為奇數 偶校驗 1的個數為偶數 下圖為奇校驗和偶校驗的設定方法。例如 m的ascii碼77,二進位制表示為0100110...
校驗碼 迴圈冗餘校驗碼
迴圈冗餘校驗碼,又稱crc碼。它利用生成多項式來為k個資料位產生r個校驗位來進行編碼。其編碼長度為k r。迴圈冗餘校驗碼由兩部分組成,左邊為資訊碼 資料 右邊為校驗碼,如下圖 若資訊碼佔k位,則校驗碼就佔n k位,其中,n為crc碼的字長,所以又稱為 n,k 碼。校驗碼位數越多,校驗能力越強。crc...
常用校驗碼(奇偶校驗碼 海明校驗碼 CRC校驗碼)
一 奇偶校驗碼 二 海明校驗碼 三 crc校驗碼 計算機系統執行時,各個部之間要進行資料交換.交換的過程中,會有發生誤碼的可能 即0變成1或1變成0 由於計算機的儲存是通過二進位制 來實現的的,誤碼會導致儲存的內容發生改變。為確保資料在傳送過程正確無誤,常使用檢驗碼.我們常使用的檢驗碼有三種.分別是...