常見的校驗方法有:
奇偶校驗、迴圈冗餘校驗crc、異或校驗、校驗和、漢明校驗
1.奇偶校驗:乙個二進碼字,如果它的碼元有奇數個1,就稱為具有奇性。例如,碼字「1011010111」有七個1,因此,這個碼字具有奇性。同樣,偶性碼字具有偶數個1。注意奇性檢測等效於所有碼元的模二加,並能夠由所有碼元的異或運算來確定。對於乙個n位字,奇性由式(8- 1)給出:
奇性=a0⊕a1⊕a2⊕…⊕an (8-1)
在乙個典型系統裡,在傳輸以前,由奇偶發生器把奇偶監督位加到每個字中。原有資訊中的數字在接收機中被檢測,如果沒有出現正確的奇、偶性,這個資訊標定為錯誤的,這個系統將把錯誤的字拋掉或者請求重發。注意,用單個的奇偶監督碼僅能檢出奇數個碼元的錯誤。
2.迴圈冗餘校驗碼(crc):在k位資訊碼後再拼接r位的校驗碼,整個編碼長度為n位,因此,這種編碼又叫(n,k)碼。對於乙個給定的(n,k)碼,可以證明存在乙個最高次冪為n-k=r的多項式g(x)。根據g(x)可以生成k位資訊的校驗碼,而g(x)叫做這個crc碼的生成多項式。 校驗碼的具體生成過程為:假設傳送資訊用資訊多項式c(x)表示,將c(x)左移r位,則可表示成c(x)*2的r次方,這樣c(x)的右邊就會空出r位,這就是校驗碼的位置。通過c(x)*2的r次方除以生成多項式g(x)得到的餘數就是校驗碼。
3.異或校驗就是偶校驗,也就是本文主題bcc校驗演算法(block check character/資訊組校驗碼),多用於串列埠通訊。
具體的方法是:
將有效的卡號接位元組作異或(xor)校驗:
然後將接收到的資料合成乙個位元組資料
最後測試最後接收到的資料是否與我們收到的卡號的校驗資料一致
4.檢驗和(checksum),在資料處理和資料通訊領域中,用於校驗目的的一組資料項的和。這些資料項可以是數字或在計算檢驗的過程中看作數字的其它字串。
ip首部校驗和字段是根據ip首部計算的校驗和碼,它不對首部後面的資料進行計算。icmp、igmp、udp和tcp在它們各自的首部中均含有同時覆蓋首部和資料校驗和碼
漢明碼是一種線性分組碼。線性分組碼是指將資訊序列劃分為長度為k
的序列段,在每一段後面附加
r位的監督碼,且監督碼和資訊碼之間構成線性關係,即它們之間可由線性方程組來聯絡。這樣構成的抗干擾碼稱為線性分組碼。
編碼原理
設碼長為
n,資訊位長度為
k,監督位長度為
r=n-k
。如果需要糾正一位出錯,因為長度為
n的序列上每一位都可能出錯,一共有
n種情況,另外還有不出錯的情況,所以我們必須用長度為
r的監督碼表示出
n+1種情況。而長度為
r的監督碼一共可以表示
2^r種情況。因此
2^r >= n + 1
, 即r >= log(n+1)
我們以乙個例子來說明漢明碼。假設
k=4,需要糾正一位錯誤,則
2^r >= n + 1 = k + r + 1 = 4 + r + 1
解得r >= 3
。我們取
r=3,則碼長為
3+4=7
。用a6,a5,...a0
表示這7
個碼元。用
s1,s2,s3
表示三個監關係式中的校正子。
我們作如下規定(這個規定是任意的):
s1 s2 s3
錯碼的位置
0 0 1 a0
0 1 0 a1
1 0 0 a2
0 1 1 a3
1 0 1 a4
1 1 0 a5
1 1 1 a6
0 0 0
無錯
按照表中的規定可知,僅當乙個錯碼位置在
a2,a4,a5或a6
時校正子s1為
1,否則s1為
0。這就意味著
a2,a4,a5,a6
四個碼元構成偶校驗關係:
s1 = a6⊕a5⊕a4⊕a2 (1)
式 同理,可以得到:
s2 = a6⊕a5⊕a3⊕a1 (2)
式
s3 = a6⊕a4⊕a3⊕a0 (3)
式
在傳送訊號時,資訊位
a6,a5,a4,a3
的值取決於輸入訊號,是隨機的。
監督為a2,a1,a0
應該根據資訊位的取值按照監督關係決定,即監督位的取值應該使上述
(1)(2)(3)
式中的s1,s2,s3為0
,這表示初始情況下沒有錯碼。即
a6⊕a5⊕a4⊕a2 = 0
a6⊕a5⊕a3⊕a1 = 0
a6⊕a4⊕a3⊕a0 = 0
由上式進行移項運算,得到:
a2 = a6⊕a5⊕a4
a1 = a6⊕a5⊕a3
a0 = a6⊕a4⊕a3
已知資訊位後,根據上式即可計算出
a2,a1,a0
三個監督位的值。
接收端受到每個碼組後,先按照
(1)~(3)
式計算出
s1,s2,s3
,然後查表可知錯碼情況。
例如,若接收到的碼字為
0000011
,按照(1)~(3)
計算得到:
s1 = 0, s2 = 1, s3 = 1
查表可得在
a3位有乙個錯碼。
這種編碼方法的最小漢明距離為
d=3,所以這種編碼可以糾正乙個錯碼或者檢測兩個錯碼。
幾種常用的資料校驗方式
我們知道資料在傳輸過程中,可能會存在資料出錯的情況。為了保證資料傳輸的正確性,因此會採取一些方法來判斷資料是否正確,或者在資料出錯的時候及時發現進行改正。常用的幾種資料校驗方式有奇偶校驗 crc校驗 lrc校驗 格雷碼校驗 和校驗 異或校驗等。一 奇偶校驗 1.定義 根據被傳輸的一組二進位制 中 1...
常用校驗方法
是否為空校驗 function isempty s var lll trim s if lll null lll.length 0 return true else return false 刪除字串左邊的空格 function ltrim str if str.length 0 return st...
MVC校驗方式 六
一 以往的校驗都是自己寫正規表示式校驗,本篇講的是通過mvc自帶的jquery檔案進行校驗 實現步驟 1.在webform頁面中引入兩個jquery檔案,10,11行的 1 page language c inherits system.web.mvc.viewpage 2 import names...