軟考的過程遇到海明碼和crc的碼,覺得不是很了解,查了一下資料,整理下。也是幫助自己理解,同樣希望可以大家理解海明碼和crc校正碼。
核心公式:2r ≥k+r+1
其中k為資訊的個數,r為校驗位的個數,那麼我們怎樣來確定校驗位?
二進位製碼 101101100,求它的海明編碼
1、資訊為k=9;r的最小值為4,所以校驗位為4
2、所以校驗碼的位數為13位,如何分配校驗碼位置和資訊位?以及校驗位的值為多少?
3、分配校驗碼的位置:校驗位的位置一般為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生成多項式進行。
例項:原始報文為1101010101,其多項式為x4+x3+x+1。在原始報文的後面若干個0(等於校驗碼的位數,而生成多項式的最高冪次就是校驗位數,即使用該生成多項式產生的校驗碼為4位)作為被除數,除以生成多項式所對應的二進位制數。 x
4+x3+x+1對應的二進位制為11011,則除數作為11011
然後把0011新增到原始報文的後面就是結果110010101010011。
關於軟考中涉及到的海明碼和crc校驗碼,主要是兩種的驗證方式。海明碼的校驗過程比較複雜,在計算機中不經常用,而crc校驗碼比較容易,先確定校驗碼的位數,以及除數是什麼?所以個人感覺想要掌握這兩種情況,就需要分析的方式。
海明碼和CRC碼
海明碼 核心公式 2 r k r 1 其中k為資訊的個數,r為校驗位的個數。例項 二進位製碼 101101100,求它的海明編碼 資訊個數字 k 9 r的最小值位4,所以校驗位是4 所以校驗碼的位數是13位,如何分配校驗位置和資訊位?以及校驗位的值位多少?分配校驗碼的位置 校驗位的位置一般為2 n ...
海明碼 CRC冗餘校驗碼
海明碼 也叫漢明碼 具有一位糾錯能力。本文以1010110這個二進位制數為例解釋海明碼的編碼和校驗方法 設資料有n位,校驗碼有x位。則校驗碼一共有2x種取值方式。其中需要一種取值方式表示資料正確,剩下2x 1種取值方式表示有一位資料出錯。因為編碼後的二進位制串有n x位,因此x應該滿足 2x 1 n...
軟考歷程(2) 海明碼校驗
這兩天學了校驗碼,在計算機系統基礎知識這塊,校驗還是挺重要的。這裡涉及到的校驗碼有三種 奇偶校驗碼 parity code 海明碼 hammi ng code 迴圈冗餘檢驗碼 cyclic redundancy check crc 1.奇偶校驗碼 這是一種最簡單最有效的校驗方法,通過在編碼中新增一位...