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碼就是:
1111101 | 110,0000
111 01
1 0100
1 1101
1001
餘數是1001,所以crc碼是110,1001
標準的crc碼是,crc-ccitt和crc-16,它們的生成多項式是:
crc-ccitt=x^16+x^12+x^5+1
crc-16=x^16+x^15+x^2+1
校驗碼 迴圈冗餘校驗碼
迴圈冗餘校驗碼,又稱crc碼。它利用生成多項式來為k個資料位產生r個校驗位來進行編碼。其編碼長度為k r。迴圈冗餘校驗碼由兩部分組成,左邊為資訊碼 資料 右邊為校驗碼,如下圖 若資訊碼佔k位,則校驗碼就佔n k位,其中,n為crc碼的字長,所以又稱為 n,k 碼。校驗碼位數越多,校驗能力越強。crc...
迴圈冗餘校驗碼
crc碼是由兩部分組成,前部分是資訊碼,就是需要校驗的資訊,後部分是校驗碼,如果crc碼共長n個bit,資訊碼長k個bit,就稱為 n,k 碼。它的編碼規則是 將原資訊碼 kbit 左移r位 k r n 運用乙個生成多項式g x 也可看成二進位制數 用模2除上面的式子,得到的餘數就是校驗碼。非常簡單...
迴圈冗餘校驗碼
本文先講述crc校驗原理等資訊,最後闡述crc 直接計算法 和高效查表法。一 基本原理 crc檢驗原理實際上就是在乙個p位二進位制資料序列之後附加乙個r位二進位制檢驗碼 序列 從而構成乙個總長為n p r位的二進位制序列 附加在資料序列之後的這個檢驗碼與資料序列的內容之間存在著某種特定的關係。如果因...