《程式設計師教程(第三版)》學習筆記 03 海明碼

2021-06-18 09:55:24 字數 1450 閱讀 6630

海明碼:

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

海明校驗:

1、確定校驗位的個數:

設:n為待傳送海明碼的總位數,k是有效資訊位數,r是校驗位個數(分成r組作奇偶校驗,能產生r位檢錯資訊)

校驗位的個數r應滿足公式n=k+r ≤ 2^r-1

2、確定資料位與校驗位在海明碼中的位置。

在海明碼中,校驗位的位號為2^i,即1、2、4、8、16……其餘部分用資料位填充。

3、通過校驗關係,確定各校驗位的值。

資料位的校驗碼確定:位號為i的校驗碼,是位號之和等i的資料位的校驗位,如下表。

海明碼每位所占用的校驗位                                        每個校驗位所校驗的數字

例如,對於7位的資料位,進行海明校驗需要4個校驗位。令資料位為d0、d1、d2……d6 。校驗位為p1、p2、p3、p4 。形成的海明碼為h1、h2、h3……h11 。如下圖。

p1偶校驗:p1、d0、d1、d3、d4、d6

即p1=d0 xor d1

xor d3 xor

d4 xor

d6p2偶校驗:p2、d0、d2、d3、d5、d6

即p2=

d0 xor d2 xor

d3 xor

d5 xor

d6p3偶校驗:p3、d1、d2、d3

即p3=

d1 xor d2 xor

d3p4偶校驗:p4、d4、d5、d6

即p4=

d4xor d5 xor d6

若採用奇校驗,則將各位校驗位的偶校驗值取反即可。

4、檢驗錯誤。做以下計算:

g1=p1 xor

d0 xor d1

xor d3 xor

d4 xor

d6g2=

p2 xor

d0 xor d2 xor

d3 xor

d5 xor

d6g3=p3 xor

d1 xor d2 xor

d3g4=

p4 xor

d4xor d5 xor

d6若採用偶校驗,g4g3g2g1全為0時表示接收到的資料無錯誤(奇校驗則應全為1)。當g4g3g2g1不全為0時說明發生了差錯,而且g4g3g2g1的十進位制值指出發生錯誤的位置。例如g4g3g2g1=1010,則說明h10(d5)出錯了,取反即可糾正。

Effective C 第三版 學習筆記

1.讓自己習慣c explicit為顯示構造說明符 僅c 用來控制不必要的隱式型別轉換,目前我只知道explicit用於類宣告的建構函式宣告中。舉個栗子 class a 以下宣告是合法的 a c 1 等效於a c a 1 a d c 如果將類的建構函式宣告為explicit,則先前的宣告將是非法的。...

笨辦法學 Python (第三版)學習筆記03

歡迎閱讀 笨辦法學 python 第三版。本書中譯本發布於 英文原版位址為 習題結果 1.句尾加 可讓 在同一行 2.大於等於 greater or equal 3.是取餘數的意思,100 25 3 4 就是100 75 4 100 3 75 4 18餘數為3 4.比較就是true or false...

程式設計師面試寶典(第三版)部分題目解答

純屬自己的解答,愛理不理,勿噴!我是問題分割線 轉換字串格式為原來字串裡的字元 該字元連續出現的個數 g2007 void stringconvert1 const char string,char cvtstring p pcv cnt 0 輸入 666666 輸出 66 輸入 112223498...