海明碼
核心公式: 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,即兩個碼字之間最少僅有乙個二進位制不同,這種編碼沒有檢錯能力。檢糾錯能力實現原理 在編碼中,除去合法的碼字外,再加入一些非法的碼字,當某個合法的碼字出現錯誤時,就變成為非法碼...