日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机组成原理:循环冗余校验码CRC具备“一位纠错”功能的思考与探索

發(fā)布時間:2024/3/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机组成原理:循环冗余校验码CRC具备“一位纠错”功能的思考与探索 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

筆者在閱讀華中科技大學(xué)譚志虎老師主編的《計算機(jī)組成原理(微課版)》教材進(jìn)行復(fù)習(xí)時,產(chǎn)生了一個疑問,并針對性地進(jìn)行了一些思考。歡迎廣大復(fù)習(xí)到這里同樣有問題的同學(xué)(寒假開學(xué)接著考試實(shí)在有點(diǎn)汗,誰愿意寒假學(xué)習(xí)啊)&&CSDN博友針對我的疑問或想法進(jìn)行批評討論。

在編寫本篇文章前,我參考了博主黎貓大俠的博客,鏈接放在下面。一道題帶你搞懂CRC循環(huán)冗余校驗(yàn)是如何糾錯的, 體會CRC的奇妙之處, 獻(xiàn)給充滿好奇心的你._黎貓大俠的博客-CSDN博客_crc糾錯

這位博主的文章給我啟發(fā)很大,感謝大蝦0w0。但我在讀完后仍然有一些問題。下面大概說一下我的想法:

作為循環(huán)冗余校驗(yàn)碼,CRC的檢錯性能是大家有目共睹的。只要我們拿著帶CRC碼的信息去模2除以生成多項(xiàng)式,得到的余數(shù)不為0,我們便曉得是有錯誤出現(xiàn)了。

如果想要更加具體一點(diǎn),知道哪位/哪幾位錯了,我們可以提前做一些計算工作,然后去查生成多項(xiàng)式對應(yīng)的余數(shù)表格(類似于下圖這種,實(shí)際應(yīng)用中應(yīng)該也能提前算出來)。如果數(shù)據(jù)信息比較短、選擇的生成多項(xiàng)式比較好,比如(7,3)碼的一些生成多項(xiàng)式,我們就可以利用提前搞出來的表格,順利區(qū)分一位錯和兩位錯,并在沒有3位錯的前提下檢查出兩位錯和糾正一位錯。

但是:對于CRC一位糾錯性能的介紹,課本上語焉不詳,只是說“可以利用CRC的編碼特性設(shè)計組合邏輯電路來進(jìn)行糾錯”(“編碼特性”是CRC的循環(huán)特性,也即:將余數(shù)左移一位除以生成多項(xiàng)式,得到下一個余數(shù),再左移做除法得余數(shù),重復(fù)這般操作,最后余數(shù)會循環(huán)變回自己。這一點(diǎn)在前文提及的博客里說得很詳細(xì),如果不知道可以跳轉(zhuǎn)先去看看);網(wǎng)絡(luò)上我搜集了一些資料,也只有前文博客在承認(rèn)具有糾錯功能的基礎(chǔ)上講述得比較詳細(xì)(或許是我的信息檢索能力比較差吧)。不過,基于前文博客的內(nèi)容,我產(chǎn)生了一個疑惑,這里放一段博客里的話:

做個類比。假若我面對的是一個約定好的、稍微有些冷門的生成多項(xiàng)式,計算機(jī)咋就知道第一位出錯的余數(shù)是啥(即上面情況中的101)?如果說,我已經(jīng)在計算機(jī)里存儲好了(或者手邊就有)前文說的那種余數(shù)表,那我大可不必大費(fèi)周章再來搞什么循環(huán)計算,直接查一下對應(yīng)過去就完事了;如果我沒有存這種余數(shù)表,那我還啥也不知道呢,(包括第一位出錯的余數(shù)),我怎么就能曉得第一位出錯的余數(shù)究竟是循環(huán)過程中的哪個呢?

(當(dāng)然,現(xiàn)在看來思考這個問題的意義好像不大,因?yàn)闆]必要用冷門的生成多項(xiàng)式去實(shí)現(xiàn)一些功能,且CRC好像主要還是用來檢錯而不是糾錯的)(之所以想這些才不是因?yàn)橛幸坏雷鳂I(yè)題我寫的答案很逆天,被分?jǐn)?shù)gank了,嘗試給自己找個臺階下呢QAQ)

我對這個問題的考慮是這樣的:

先對一些定義或約定進(jìn)行說明:

將原信息用一個信息多項(xiàng)式M(x)表示,其中Ci序列就是原來的數(shù)據(jù)信息,可以取0/1。

將M(x)左移r位,表示成,這樣就能在右側(cè)空出r位放產(chǎn)生的CRC校驗(yàn)碼。

用按照 模2運(yùn)算規(guī)則 除以 生成多項(xiàng)式G(x) ,得到的余數(shù)R(x)就是待填入的CRC校驗(yàn)碼。

(注意:模2運(yùn)算規(guī)則下加運(yùn)算和減運(yùn)算效果相同)

也就是說,最后得到的含CRC校驗(yàn)碼的信息應(yīng)該是: M(1)|R(1)? (“|”表示把他倆連接起來)

我們有等式: (重要)

? ? ? ? ? ? ? ? ? ? ①

說一個猜想:這個例子中第一位錯的時候余數(shù)是101;k=4,r=3,G(x)=1011。那么有沒有這樣一種可能,第一位錯的余數(shù)與k、r、G(x)的取值直接相關(guān),所以我們可以直接算出當(dāng)前CRC約定下的第一位錯的余數(shù)而不用拐著彎的去算余數(shù)表,并為后續(xù)利用循環(huán)特性完成的計算提供數(shù)據(jù)基礎(chǔ)?(后面的證明如果有反例或者邏輯錯誤請速速聯(lián)系我,主打一個光速恥辱刪帖好吧)?

道理還是比較簡單的,就是寫起來和表達(dá)起來有點(diǎn)繁瑣。對于只有第一位出錯而言,他只影響最高的信息位。記影響前M(x)的定義與前文相同,影響后M'(x)的定義為:

顯然,與的值 可以且僅可以 為1/0和0/1兩種組合情況。而在模2運(yùn)算下,加運(yùn)算和減運(yùn)算等效,因此我們有:? ? ? ②

由等式①和等式②,我們作出如下敘述:(鍵盤敲太麻煩,寫起來 2^{***} 跟 x^{***} 又寫得挺混亂的,但意思應(yīng)該能到吧,求諒解T T) (“?”就指代例子中我們在此處研究的“101”)

總結(jié)一下:

設(shè)第一位出錯時的余數(shù)為'?',那么它的計算方法是:?

這樣,我們在拿到CRC生成的規(guī)則后,就可以找到一種行之有效的方法迅速推理出第一位出錯時的余數(shù)是啥,而且是當(dāng)前約定好的CRC生成規(guī)則(k、r、G(x)的取值固定)下“放之四海而皆準(zhǔn)”的余數(shù)。一切問題也就迎刃而解。剩下的,如果想搞余數(shù)表,整個水落石出、明明白白,那就放手去做吧,搞余數(shù)表或者查現(xiàn)成的表;如果想好好體驗(yàn)一把“CRC循環(huán)特性”(霧),就可以祭出黎貓大俠的方法,體驗(yàn)就完事了。(雖然我感覺這種體驗(yàn)其實(shí)并不好,打表才是yyds)

因?yàn)槲疫€沒學(xué)完(平時沒聽課,悲),所以上面的內(nèi)容僅代表個人觀點(diǎn)。希望上文對您有幫助!如果有紕漏疏忽的地方,敬請批評指正!如果有沒講明白的地方,歡迎評論留言!如果馬上就要組原考試的話,祝你(也祝我)考個好成績!另外,復(fù)習(xí)考試不要像我這個joker一樣,對著一個不是考點(diǎn)的東西看起來沒完,快要自學(xué)不完了(又悲)...
?

2023-5-6:來還愿,組原考試沒有寄穿,反而成了一眾科目里面發(fā)揮還不戳的一門。
祝大家學(xué)習(xí)組原的道路也一帆風(fēng)順捏!QWQ(當(dāng)然不順也沒事,最后弄懂了就行=w=)

總結(jié)

以上是生活随笔為你收集整理的计算机组成原理:循环冗余校验码CRC具备“一位纠错”功能的思考与探索的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。