常用校驗方式

2021-06-07 07:55:19 字數 2845 閱讀 2394

常見的校驗方法有:

奇偶校驗、迴圈冗餘校驗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...