crc迴圈冗餘校驗碼
crc(cyclic redundancy check)迴圈冗餘校驗碼
是常用的校驗碼,在早期的通訊中運用廣泛,因為早期的通訊技術不夠可靠(不可靠性的**是通訊技術決定的,比如電磁波通訊時受雷電等因素的影響),不可靠的通訊就會帶來『確認資訊』的困惑,書上提到紅軍和藍軍通訊聯合進攻山下的敵軍的例子,第一天紅軍發了條資訊要藍軍第二天一起進攻,藍軍收到之後,發一條確認資訊,但是藍軍擔心的是『確認資訊』如果也不可靠而沒有成功到達紅軍那裡,那自己不是很危險?於是紅軍再發一條『對確認的確認資訊』,但同樣的問題還是不能解決,紅軍仍然不敢冒然行動。
對通訊的可靠性檢查就需要『校驗』,校驗是從資料本身進行檢查,它依靠某種數學上約定的形式進行檢查,校驗的結果是可靠或不可靠,如果可靠就對資料進行處理,如果不可靠,就丟棄重發或者進行修復。
crc碼是由兩部分組成,前部分是資訊碼,就是需要校驗的資訊,後部分是校驗碼,如果crc碼共長n個bit,資訊碼長k個bit,就稱為(n,k)碼。 它的編碼規則是:
1、首先將原資訊碼(kbit)左移r位(k+r=n)
2、運用乙個生成多項式g(x)(也可看成二進位制數)用模2除上面的式子,得到的餘數就是校驗碼。
非常簡單,要說明的:模2除就是在除的過程中用模2加,模2加實際上就是我們熟悉的異或運算,就是加法不考慮進製,公式是:
0+0=1+1=0,1+0=0+1=1
即『異』則真,『非異』則假。
由此得到定理:a+b+b=a 也就是『模2減』和『模2加』直值表完全相同。
有了加減法就可以用來定義模2除法,於是就可以用生成多項式g(x)生成crc校驗碼。
例如: g(x)=x4+x3+x2+1,(7,3)碼,資訊碼110產生的crc碼就是:
10111101 | 110,0000
111 01
1 0100
1 1101
1001
餘數是1001,所以crc碼是110,1001
標準的crc碼是,crc-ccitt和crc-16,它們的生成多項式是:
crc-ccitt=x16+x12+x5+1
crc-16=x16+x15+x2+1
CRC迴圈冗餘校驗碼
1 crc crc迴圈冗餘校驗碼是資料通訊中的一種查錯校驗碼。迴圈冗餘檢查對資料進行多項式計算,將計算結果附加在幀後面,接收資料的裝置執行模2運算,保證資料傳輸的正確性和完整性。2.模2除法 不向上借位,只要除數和被除數的位數相同就可進行計算,不比較它們的大小 模2運算中用到了模2減法,與邏輯異或相...
迴圈冗餘校驗碼CRC
一 基本原理 crc檢驗原理實際上就是在乙個p位二進位制資料序列之後附加乙個r位二進位制檢驗碼 序列 從而構成乙個總長為n p r位的二進位制序列 附加在資料序列之後的這個檢驗碼與資料序列的內容之間存在著某種特定的關係。如果因干擾等原因使資料序列中的某一位或某些位發生錯誤,這種特定關係就會被破壞。因...
迴圈冗餘校驗碼 CRC
演算法 雙方預先規定好乙個二進位制數,即生成多項式,這個多項式最高最低位均為1。多項式短於幀長度。設生成多項式為r 1位,即將傳送的幀長為m位,則幀在後面加上r個0,得到乙個m r位的數。用新得到的數對生成多項式取餘,然後新得到的數加上餘數就是發出的幀。例 第一行的幀為原本的幀,規定的生成多項式為1...