2021 01 23 常見效驗

2021-10-17 08:34:09 字數 3463 閱讀 9329

奇偶效驗:

海明效驗:

迴圈冗餘效驗:

奇效驗:

當有效資訊的「1」為奇數個的時候,最後添0,反之新增1

偶效驗:

當有效資訊的「1」為奇數個的時候,最後新增1,反之新增0

舉栗子:

有效資訊

奇效驗碼

偶效驗碼

110011

1100111

1100110

101010

1010101

1010100

奇偶校驗實際上就是對我們dndn-1…d0進行異或運算(兩兩相同為0,不同為1),最後偶校驗生成0,奇校驗生成1,正確,反之錯誤。

第乙個奇效驗:

1⊕1⊕0⊕0⊕1⊕1⊕1=1(正確)

第乙個偶效驗:

1⊕1⊕0⊕0⊕1⊕1⊕0=0(正確)

第二個奇效驗:

1⊕0⊕1⊕0⊕1⊕0⊕1=1(正確)

第二個偶效驗:

1⊕0⊕1⊕0⊕1⊕0⊕0=0(正確)

海明碼利用奇偶性來檢錯和糾錯的效驗方法。海明碼的構成方法是在資料位之間的確定的位置插入k個效驗位,通過擴大碼距來實現檢錯和糾錯。

對於資料位m的資料,加入k位的效驗碼,應該滿足夏農的第二定理:n=m+k<=2^k-1

說明:

這裡的m就是待編有效資訊的位數,例如110101就是m=6,然後代入m,6+k<=2^k-1得到m=6,k>=4(取最小值),這樣組成10位海明效驗碼

例子

設資料為01101001,試採用校驗位求其偶校驗方式的海明碼。

根據上面的公式得到,m=8,k≥4

(1)確定資料位d和效驗位p在海明碼中的位置:

由海明碼編碼規則可知:pi在海明碼的第2i-1,比如p4=2(4-1)=8,所以位於第8位

海明碼123

4567

891011

12效驗位

p1p2

p3資料位

d0d1

d2d3

d4d5

d6d7

(2)確定效驗關係

這個難點在於如何確定效驗位組

h3=d0,海明碼下標為3,我們必須用已知的效驗位(p1,p2,p3,p4)來表示3,這裡的3等於1+2

海明碼海明碼下標

效驗位組h11

p1h22p2

h3(d3)

3 = 1+2

p1,p2h44

p3h5(d1)

5 = 1+4

p1,p3

h6(d2)

6 = 2+4

p2,p3

h7(d3)

7 = 1+2+4

p1,p2,p3h88

p4h9(d4)

9 = 1+8

p1,p4

h10(d5)

10 = 2+8

p2,p4

h11(d6)

11 = 1+2+8

p1,p2,p4

h12(d7)

12 = 4+8

p3,p4

(3)故:p1效驗:p1,d0,d1,d3,d4,d6

p1=d0⊕d1⊕d3⊕d4⊕d6=0⊕1⊕0⊕1⊕0=0

p2=d0⊕d2⊕d3⊕d5⊕d6=0⊕1⊕0⊕0⊕0=1

p3=d1⊕d2⊕d3⊕d7=1⊕1⊕0⊕1=1

p4=d4⊕d5⊕d6⊕d7=1⊕0⊕0⊕1=0

⊕符號:代表異或,相同則為0,不同則為1。只要仔細一定可以計算正確。

按照**海明碼的位置插入p1~p4到資料中,所以海明校驗碼:010111001001

(4)設定指錯字g4,g3,g2,g1

g4=p4⊕d4⊕d5⊕d6⊕d7

g3=p3⊕d1⊕d2⊕d3⊕d7

g2=p2⊕d0⊕d2⊕d3⊕d5⊕d6

g1=p1⊕d1⊕d3⊕d4⊕d6

g1g2g3g4為0000,則資料傳輸沒有錯誤。

以上面的資料傳輸為例子:

g4=0  g3=0  g2=0  g1=0

若資料傳輸之後變成010111001000

則g4=p4⊕d4⊕d5⊕d6⊕d7=0⊕1⊕0⊕0⊕0=1

g3=p3⊕d1⊕d2⊕d3⊕d7=1⊕1⊕1⊕0⊕0=1

g2=p2⊕d0⊕d2⊕d3⊕d5⊕d6=1⊕0⊕1⊕0⊕0⊕0=0

g1=p1⊕d1⊕d3⊕d4⊕d6=0⊕0⊕1⊕0⊕1⊕0=0

g4g3g2g1組成的二進位制數為:1100,也就是12,說明第12位出現的錯誤

(5)海明碼效驗缺點

g4=p4⊕d4⊕d5⊕d6⊕d7=0⊕1⊕0⊕0⊕0⊕1=0

g3=p3⊕d1⊕d2⊕d3⊕d7=1⊕0⊕0⊕0⊕1=0

g2=p2⊕d0⊕d2⊕d3⊕d5⊕d6=1⊕0⊕0⊕0⊕0⊕0=1

g1=p1⊕d1⊕d3⊕d4⊕d6=0⊕0⊕0⊕1⊕0=1

g1g2g3g4=0011,也就是第3位出現錯誤,很明顯這是不準確的。

crc和海明效驗碼類似,也就是有效資訊(k位)+效驗資訊(r位),需要滿足n=m+k<=2^k-1

定義收發雙方約定的乙個(k+1)位二進位制數,傳送方利用g(x)對資訊多項式做模2除運算,生成效驗碼。接收方利用g(x)對收到的編碼多項式做模2除運算檢測差及錯誤定位

滿足條件:

g(x)多項式

g(x)

x3+x2 +x+1

1111

x3 +x+1

1011

x4+x2 +x+1

10111

下面舉個栗子:

假設我們要傳輸的資料為:

11001100

我們約定乙個g(x),但是在得出g(x)的長度之前,我們先要計算一下k的位數應該為多少。我們要傳輸的資料的位數是8位,那麼根據n=m+k<=2^k-1,這個公式,我們可以得出:k應該為4

並且g(x)的最高位和最低位都應該是1,那麼我們就約定乙個:

10001

(或許有的人要問了,為啥是五位數呢?因為k是4,我們約定的位數應該比這個k多一位數字)

接著在11001100後面新增0000四個0

再用110011000000去和10001進行模2除運算。

運算的過程中,餘數的開頭為,那麼就在上面添0,如果開頭是1的話,那麼就可以新增1

這個可以算出來結果是:

11000000

餘數是:

0000

那麼就表明正確的冗餘碼應該是:

0000

新增到後面就是:

110011000000

上面就是編碼後的

css常見效果 漸變效果

漸變效果我們多知道他是怎麼個東西,但是你真的知道深層次的漸變效果嘛?一般的漸變效果 container width 200px height 100px background linear gradient fb3,58a 效果圖如下 這個效果我們都知道,那麼他為什麼是這種漸變呢?加幾個引數試試?b...

Flutter 滾動布局的幾種常見效果處理

有這麼一種效果,編寫的column列表布局或者其它控制項布局,如果超過螢幕的話需要能夠進行上下滾動,或者如果彈出輸入框的時候螢幕不會出現控制項超出螢幕的問題。在這裡主要是使用singlechildscrollview進行解決。效果如下 如下 class scrollcolumn extends st...

方法成套 才好見效

立竿見影的獨一成分特效藥是很少見的,就如同症狀和 都很單一的疾病。而且即便是這種少見的疾病,我也可以採取綜合的 方法。我們很少會單一的實施一種措施。而且即便是單一的措施,我們也很少會沒有後續的其他跟進。這就需要我們能夠提供一種組合,系統的組合。我想即便是你只會三板斧,但是還是需要基本功。也就是不管怎...