這兩天在技術(shù)論壇逛,看到有個(gè)網(wǎng)友問CRC校驗(yàn)的問題,稱看不懂CRC的描述。其實(shí)這是計(jì)算機(jī)科學(xué)比較荒唐的一個(gè)例證,把非常簡(jiǎn)單的加減乘除寫的那么復(fù)雜,最典型的是數(shù)據(jù)庫技術(shù),一個(gè)加減乘除的算法可以寫本書。 為了不破壞論壇的和諧氣氛,在此回答ruixin網(wǎng)友的問題,帖子地址:http://www./bbs/thread-127259-1-1.html CRC校驗(yàn)是數(shù)據(jù)通信的校驗(yàn)法之一,稱數(shù)據(jù)冗余校驗(yàn)。冗:就是把要發(fā)送的數(shù)據(jù)加大,余:就是用除法的余數(shù)當(dāng)作發(fā)送數(shù)據(jù)的一部分。CRC校驗(yàn)與加密和解密的方法一模一樣,非常簡(jiǎn)單。 方法如下: 發(fā)送端和接收端共同設(shè)一個(gè)值 1首先發(fā)送端和接收端共同設(shè)一個(gè)4以上的數(shù),隨便設(shè),這個(gè)數(shù)是用來除要發(fā)送的數(shù)據(jù)的。至于為什么要4以上,是為了要適應(yīng)二進(jìn)制,還有這個(gè)整數(shù)不能用4、8、16等,因?yàn)橹竽愠肆?、8、16又去除,沒意義,(注意,發(fā)送1時(shí)要特殊處理,這算法校驗(yàn)不了1?。。┮虼?,這與加密解密值是一樣的,在此稱校驗(yàn)值。咱現(xiàn)在設(shè)個(gè)6試試。 發(fā)送端 2發(fā)送端要發(fā)送的數(shù)據(jù),比如要發(fā)送10這個(gè)數(shù)為例,先加大---10x4=40(這里乘4是因?yàn)槭?這個(gè)數(shù)的二進(jìn)制冪,計(jì)算機(jī)里計(jì)算就是二進(jìn)制左移2位嘛,而8以上就是8,16以上就是16等.....以此類推),然后去除以6這個(gè)校驗(yàn)值,40/6余4。 3 發(fā)送端將40這個(gè)加大的數(shù)和4這個(gè)余數(shù)一起發(fā)送。 接收端 4 接收端,用40-4/6 余數(shù)為0則接收數(shù)據(jù)正確,余數(shù)不為0則接受數(shù)據(jù)錯(cuò)誤,要求重發(fā)! 5 接收端還原數(shù)據(jù),就是10啦! 就這么簡(jiǎn)單,這就是CRC校驗(yàn)的全過程,至于計(jì)算機(jī)書上又是什么多項(xiàng)式、又是什么多項(xiàng)式的加減乘除等等,那完全是為了寫書,給出一般化描述,看著挺科學(xué)的,實(shí)際就是加減乘除,因?yàn)橛枚M(jìn)制來描述CRC校驗(yàn)顯得更眼花繚亂呵呵!還是用十進(jìn)制描述的簡(jiǎn)單易看 ! |
|