如何編碼?
如何校驗?
在計算機儲存中,可能受其它原因,導致儲存出現錯誤,0變成1,1變成0,存放資料以漢明碼的方式儲存,可以進行資料的校正,具有一位糾錯能力。
在介紹漢明碼之前舉乙個例子說明一下分組校驗:比如有乙個位元組的資料 1000 0101
黃色為檢驗位
資料說明
1 1010 0001
該資料1的個數為奇數,則可以得知1010 0001裡面某一位出現錯誤
01010 1 0001
該資料1的個數為奇數,則可以得知1010 或0001裡面某一位出現錯誤
從**中可以看出如果新增的檢測位越多可以找到出錯的範圍越精確,當然這種分組校驗組和組之間是不重複的,而海明碼的組和組之間是重複的,很巧妙的重複能夠精確的找到哪一位出現了錯誤。
將要進行檢測的二進位制**為n位,為使其具有糾錯能力,需要再加上k位的檢測位,組成n+k位的**。那麼,新增加的檢測位數k應滿足:2k≥n+k+1
2 k⩾
n+k+
12^k \geqslant n+k+1
2k⩾n+k
+1比如:二進位制資料有4位 1011匿名檢測位需要3位,因為23 = 4+3+1
位 置序
號=2i
(i=0
,1,2
,3,4
,...
)位置序號=2^i(i=0,1,2,3,4,...)
位置序號=2
i(i=
0,1,
2,3,
4,..
.)如果有3個檢測位,參考下面**
位置序號12
3456
7二進位制資料10
11說明檢測位
檢測位資料位
檢測位資料位
資料位資料位
3個檢測位,每個檢測位劃分乙個組,第1組有1,3,5,7位;第2組有2,3,6,7位;第3組有4,5,6,7位。
位置序號
用2i (i=0,1,2)分解
包含二進位制形式
所屬組3
1+2xx1,x1x
1,25
1+4xx1,1xx
1,36
2+4x1x,1xx
2,37
1+2+4
xx1,x1x,1xx
1,2,3 分組
檢測位序號
二進位制形式
轉換成十進位制的位置序號
11(20)
xx11,3,5,7
22(21)
x1x2,3,6,7
34(22)
1xx3,5,6,7……
……檢測位的取值和該位所在的檢測組的奇偶校驗方式有關。
偶校驗位置序號12
3456
7二進位制資料01
1001
1說明檢測位檢測位
資料位檢測位
資料位資料位
資料位奇校驗
位置序號12
3456
7二進位制資料10
1101
1說明檢測位檢測位
資料位檢測位
資料位資料位
資料位給出一段7位奇校驗海明碼,在上面資料基礎上把6號位的1變為0
位置序號12
3456
7二進位制資料10
1100
1說明檢測位檢測位
資料位檢測位
資料位資料位
資料位開始校驗
位置相應檢測位和資料位
1的個數(包含檢測位)
結果p4
4,5,6,7
2(偶)1p2
2,3,6,7
2(偶)1p1
1,3,5,7
3(奇)
0把位置從大到小排列並寫出相應的結果 110 轉換成10進製就是6,所以6號位置的資料出錯,不同的結果以此類推。
注意:把3個位置從大到小排列並寫出相應的結果
在校驗過程中,可以有3種判斷方法:
1.查詢相應檢測位和資料位1的個數找奇偶,如果個數為偶,在偶校驗裡面為0,奇校驗中為1;如果個數為奇,在偶校驗裡面為1,奇校驗中為0
2.直接相加相應檢測位和資料位看數值的奇偶,如果個數為偶,在偶校驗裡面為0,奇校驗中為1;如果個數為奇,在偶校驗裡面為1,奇校驗中為0
3.相應檢測位和資料位進行異或運算,偶校驗直接是異或運算結果,奇校驗還要對結果取反。
計網筆記 海明碼(漢明碼)
海明碼是可以發現雙位元錯誤,並可以糾正單位元錯誤的編碼方案。一般來講,檢錯編碼不一定具有糾錯能力,但是糾錯編碼具有檢錯能力 其工作流程可以分為以下四個步驟 1 確定校驗碼位數r 2 確定校驗碼和資料的位置 3 求出校驗碼的值 4 檢錯並糾錯。在以下的工作流程中,我們要傳送的資料d 101101.我們...
海明碼(漢明碼)的工作機制
一 海明碼的形成方式 1 首先海明碼是由資訊位和校驗位組成的 2 資訊位校驗位的關係 校驗位的位數r 資訊位的位數i 2 r 1 i r 3 校驗位的位置是2的整數次方 如 1 2 4 8 4 海明碼位數分組 因為海明碼其實是分組的奇偶校驗碼,所以有個分組的概念 1 1 3 5 7 2 2 3 6 ...
漢明碼或者海明碼的計算或者糾錯
設k為有效資訊的位數,r為校驗位的位數,則整個碼字的位數n應滿足不等式 n k r 2r 1 是2的r次方 若要求海明碼能檢測出2位錯誤,則再增加1位校驗位。例如 二進位制編碼位10101100,共8位所以k 8,可以得出校驗位r的位數為4位。位號 1 n 是那些權值為2的那些位,即2 0 2 1 ...