2011-02-24 96 views
1

當數據傳輸被篡改1位或2位時,接收機能自動糾正它嗎?CRC是否具有以下功能

+0

哪種CRC算法?多少位?這個問題真的很含糊。閱讀[維基百科鏈接](http://en.wikipedia.org/wiki/Cyclic_redundancy_check)瞭解更多信息。 – 2011-02-24 01:46:19

+0

夥計有這個真棒網站,我認爲它叫「維基比達」或什麼的。 Idk的人,你應該檢查出來。 – rook 2011-02-24 02:47:37

回答

6

不,CRC是一個錯誤檢測代碼,而不是一個錯誤糾正碼。

更多here

0

CRC主要用作一個檢錯碼。但是,如果總比特數(包括CRC中的比特數)小於CRC的週期,則可以通過計算綜合症(xor計算和接收的CRC)來校正單比特錯誤。如果單獨翻轉,每一位都會產生一個獨特的綜合徵。我們可以迭代CRC算法來查找與每個位相關的綜合徵;如果發現與每個位相關的綜合症,可以翻轉它並糾正一位錯誤。

但是,這樣做的一個主要危險是,CRC對於拒絕僞造數據將不太有用。如果對15個字節的數據包使用8位CRC,則256個隨機數據包中只有一個會通過有效性,但所有隨機數據包的一半可以通過翻轉一位來「糾正」。

+0

爲此,CRC必須能夠檢測到所有1位和2位錯誤。 – philcolbourn 2014-04-05 04:57:01

+0

@philcolbourn:如果一個CRC的週期爲N,那麼它將無法檢測到的任意長度輸入的唯一兩位錯誤將是那些錯誤數量爲N位數倍的錯誤。如果輸入流爲N位或更短,則會檢測到所有的兩位錯誤。 – supercat 2014-04-05 23:14:04

+0

是的,這聽起來沒錯。我認爲N非常大 - 比16和32位CRC的大多數數據包或幀大小要大。但對於8位CRC來說,這可能是個問題 - 對嗎? – philcolbourn 2014-04-06 09:27:28

相關問題