海明碼和CRC碼

2021-09-16 21:00:11 字數 1654 閱讀 2541

海明碼

核心公式: 2^r ≥k+r+1

其中k為資訊的個數,r為校驗位的個數。

例項

二進位製碼 101101100,求它的海明編碼

資訊個數字 k=9;r的最小值位4,所以校驗位是4

所以校驗碼的位數是13位,如何分配校驗位置和資訊位?以及校驗位的值位多少?

分配校驗碼的位置:校驗位的位置一般為2^n(n≥0),針對此題來說就是1、2、4、8的位置上。

4、資訊位的位置:除了校驗碼位,其餘的從高到低依次存放。如圖

5、r1、r2、r3、r4的數值如何確定?

想要確定校正位的數值,就首先必須知道哪些資訊位需要校正位來校正,校正的原則:想要校正第幾(i)位,則應該滿足對應的那幾個校正位相加等於i。例如3=1+2;7=1-+2+4。

從上面的位置能知道每乙個校驗碼參與的資訊位,然後就是異或⊕(相同的兩個數異或為0,不同的兩個數為1)

根據上表和計算公式得出r1=1,r2=1,r3=0;r4=0;則把結果填入其中得到

錯誤的案例,把海明校驗碼中的第11位該為1,驗證錯誤,並找出錯誤位。

r1=b3⊕b5⊕b7⊕b9⊕b11⊕b13=1⊕0⊕1⊕0⊕1⊕0=1

r2=b2⊕b3⊕b6⊕b7⊕b10⊕b11=1⊕1⊕1⊕1⊕1⊕0=1

r3=b4⊕b5⊕b6⊕b7⊕b12⊕b13=0⊕0⊕1⊕1⊕0⊕0=0

r4=b8⊕b9⊕b10⊕b11⊕b12⊕b13=0⊕0⊕1⊕0⊕0⊕0=1

從高位往下寫得到1101,即十進位制的11,因此錯誤的位數為第11位。

crc校驗碼

crc的實現原理十分易於硬體實現,因此被廣泛的應用於計算機網路上的差錯控制。crc校驗碼需根據crc生成多項式進行。

例項:原始報文為1101010101,其多項式為x4+x3+x+1。在原始報文的後面若干個0(等於校驗碼的位數,而生成多項式的最高冪次就是校驗位數,即使用該生成多項式產生的校驗碼為4位)作為被除數,除以生成多項式所對應的二進位制數。

x4+x3+x+1對應的二進位制為11011,則除數作為11011

然後把0011新增到原始報文的後面就是結果110010101010011。

【總結】

關於軟考中涉及到的海明碼和crc校驗碼,主要是兩種的驗證方式。海明碼的校驗過程比較複雜,在計算機中不經常用,而crc校驗碼比較容易,先確定校驗碼的位數,以及除數是什麼?所以個人感覺想要掌握這兩種情況,就需要分析的方式。

軟考 海明碼和CRC碼

軟考的過程遇到海明碼和crc的碼,覺得不是很了解,查了一下資料,整理下。也是幫助自己理解,同樣希望可以大家理解海明碼和crc校正碼。核心公式 2r k r 1 其中k為資訊的個數,r為校驗位的個數,那麼我們怎樣來確定校驗位?二進位製碼 101101100,求它的海明編碼 1 資訊為k 9 r的最小值...

海明碼 CRC冗餘校驗碼

海明碼 也叫漢明碼 具有一位糾錯能力。本文以1010110這個二進位制數為例解釋海明碼的編碼和校驗方法 設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x 1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n x位,因此x應該滿足 2x 1 n...

校驗碼 漢明碼 CRC碼

資料校驗碼 任意兩個碼字之間最少變化的二進位制位數,被稱為資料校驗碼的碼距 例如用四位二進位制數表示16種狀態,此時碼距為1,即兩個碼字之間最少僅有乙個二進位制不同,這種編碼沒有檢錯能力。檢糾錯能力實現原理 在編碼中,除去合法的碼字外,再加入一些非法的碼字,當某個合法的碼字出現錯誤時,就變成為非法碼...