奇偶效驗:
海明效驗:
迴圈冗餘效驗:
奇效驗:
當有效資訊的「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...
方法成套 才好見效
立竿見影的獨一成分特效藥是很少見的,就如同症狀和 都很單一的疾病。而且即便是這種少見的疾病,我也可以採取綜合的 方法。我們很少會單一的實施一種措施。而且即便是單一的措施,我們也很少會沒有後續的其他跟進。這就需要我們能夠提供一種組合,系統的組合。我想即便是你只會三板斧,但是還是需要基本功。也就是不管怎...