數(shù)據(jù)校驗碼--漢明碼(Hamming code)

漢明碼是Richard Hamming于1950年提出的。是目前廣泛采用的一種有效的校驗碼域庇,其中,主存的ECC(Error Correcting Code)采用的就是類似的校驗碼赠摇。

基本原理

將有效的信息按某種規(guī)律分成若干組货徙,每組安排一個校驗位,做奇偶測試晨仑,就能提供多位檢錯信息褐墅,以指出最大可能是哪位出錯,從而將其糾正洪己。實質(zhì)上妥凳,漢明校驗碼是一種多重校驗。

----摘自百度百科
這個分組的思想有點不是很理解答捕。

在有效信息位種中加入幾個校驗位形成漢明碼逝钥,使碼距比較均勻的增大,并把漢明碼的每一個二進制位分配到幾個奇偶校驗組中拱镐。

以下使用P代表校驗位艘款,H代表漢明碼,D代表原始信息位沃琅,N位信息位的位數(shù)哗咆,K位校驗位的位數(shù)。
則N與K的關(guān)系為2^(K-1) >=N+K+1,如下表:

N K
1~3 4
4~10 5
11~25 6
26~56 7
57~119 8

分組原則

  • 信息位和校驗位之和為m,每個校驗位Pi在漢明碼中被分到位號為2^(i-1)的位置上益眉,其余各位為信息位
  • 漢明碼每一位Hi有多個校驗位校驗晌柬,其關(guān)系是被校驗的每一位位號等于校驗它的各校驗位的位號之和,即漢明碼的實質(zhì)是參與校驗的各校驗位權(quán)之和郭脂。 這句話理解起來有點別扭年碘,看下面例子。
  • 在增大碼距時展鸡,應(yīng)使所有編碼的碼距盡量均勻地增大屿衅,以保證對所有代碼的檢測能力平衡的提高

例子

編碼

假設(shè)原始數(shù)據(jù)信息位的位數(shù)為8,那么他需要的K值位5娱颊,即需要有5個校驗位傲诵,組成的漢明碼的位數(shù)為13.再根據(jù)校驗位的分配原則凯砍,組成的漢明碼如下:

|位|13| 12| 11 |10| 9| 8| 7 |6| 5| 4| 3| 2| 1|
|-|-|-|-|-|-|-|-|-|-|-|-|-|
|漢明碼|P5| D8| D7| D6 | D5| P4| D4| D3| D2| P3| D1| P2| P1|

P5本來應(yīng)該是放在第16位的,但是由于生成的漢明碼位數(shù)為13所以它就被挪到的第13位了拴竹。
那么怎么確定校驗?zāi)匚蝰茫孔畛跻怖_我許久。
先看一個表格:
其中H的下標代表在漢明碼中的位置栓拜,也是P4P3P2P1組成的-十進制數(shù)

P5 P4 P3 P2 P1 H
0 0 0 1 H1 P1
0 0 1 0 H2 P2
0 0 1 1 H3 D1
0 1 0 0 H4 P3
0 1 0 1 H5 D2
0 1 1 0 H6 D3
0 1 1 1 H7 D4
1 0 0 0 H8 P4
1 0 0 1 H9 D5
1 0 1 0 H10 D6
1 0 1 1 H11 D7
1 1 0 0 H12 D8
1 1 0 1 H13 P5

校驗位Pi的偶校驗結(jié)果就是:
P1 = D1 ^ D2 ^ D4 ^ D5 ^ D7
P2 = D1 ^ D3 ^ D4 ^ D6 ^ D7
P3 = D2 ^ D3 ^ D4 ^ D8
P4 = D5 ^ D6 ^ D7 ^D8
如果是奇校驗的話上面的結(jié)果取反就是了座泳。
那么還有P5呢?上面的結(jié)果中幕与,D4挑势,D7出現(xiàn)了3次,而D1啦鸣,D2潮饱,D3,D5诫给,D6香拉,D8僅出現(xiàn)了2次,為了使其各個信息位在校驗中均勻的出現(xiàn)校驗中狂,從而定義P5 = D1 ^ D2 ^ D3 ^ D5 ^ D6 ^D8,這樣凫碌,每一位信息位都均勻的出現(xiàn)在3個Pi值得形成關(guān)系中,當任意一位信息位變化的時候都會引起3個P值得變化胃榕,即合法漢明碼的碼距為4 (前面都懂盛险,這個碼距為4有點想不明白)
這就是編碼了。

現(xiàn)在再來看看這句話

漢明碼每一位Hi有多個校驗位校驗勋又,其關(guān)系是被校驗的每一位位號等于校驗它的各校驗位的位號之和苦掘,即漢明碼的實質(zhì)是參與校驗的各校驗位權(quán)之和。

P1楔壤,P2鸟蜡,P3,P4挺邀,P5的位數(shù)分別為1,2,4,8,13
D1的漢明碼位數(shù)為3,3 = 2 + 1所以D1會被P1跳座,P2兩個校驗位所校驗端铛。

漢明碼的信息位 漢明碼的位數(shù) 被校驗位 說明
D1 3 = 1 + 2 P1,P2 D1信息位會被校驗位P1,P2所校驗疲眷。
D2 5 = 1 + 4 P1,P3
D3 6 = 2 + 4 P2,P3
D4 7 = 1 + 2 +4 P1,P2,P3
D5 9 = 1+ 8 P1,P4
D6 10 = 2 + 8 P2,P4
D7 11 = 1 + 2 +8 P1,P2,P4
D8 12 = 4 + 8 P3,P4

根據(jù)偶校驗結(jié)果以及上應(yīng)該就清楚了禾蚕。

校驗

將收到的漢明碼進行偶校驗(當然也可以進行奇校驗,前提是前面編碼的時候使用的是奇校驗)

S1 = P1 ^ D1 ^ D2 ^ D4 ^ D5 ^ D7
S2 = P2 ^ D1 ^ D3 ^ D4 ^ D6 ^ D7
S3 = P3 ^ D2 ^ D3 ^ D4 ^ D8
S4 = P4 ^ D5 ^ D6 ^ D7 ^D8
S5 = P5 ^ D1 ^ D2 ^ D3 ^ D5 ^ D6 ^D8

漢明碼出錯情況:
記錄 S = S5 S4 S3 S2 S1

  1. S為00000時代表無錯
  2. 有一位不為0,表明某一校驗位出錯或者三位漢明碼(信息位和校驗位)同時出錯
  3. 兩位不為0狂丝,表明兩位漢明碼同時出錯换淆,此時只能發(fā)現(xiàn)錯誤無法確定錯誤的位置
  4. 3位不為0哗总,表明一位信息位出錯或者3位校驗位同時出錯
  5. 4/5位不為0,表明出錯情況嚴重倍试,系統(tǒng)可能出現(xiàn)故障讯屈,應(yīng)檢查系統(tǒng)硬件的正確性

以上結(jié)果分析基于偶校驗。

|漢明碼||P5| D8| D7| D6 | D5| P4| D4| D3| D2| P3| D1| P2| P1|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|出錯位號||H13| H12| H11 |H10|H9| H8| H7 |H6| H5| H4| H3| H2|H1|
||S5|1|1|0|1|1|0|0|1|1|0|1|0|0|
||S4|0|1|1|1|1|1|0|0|0|0|0|0|0|
||S3|0|1|0|0|0|0|1|1|1|1|0|0|0|
||S2|0|0|1|1|0|0|1|1|0|0|1|1|0|
||S1|0|0|1|0|1|0|1|0|1|0|1|0|1|

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末县习,一起剝皮案震驚了整個濱河市涮母,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躁愿,老刑警劉巖叛本,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異彤钟,居然都是意外死亡来候,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門逸雹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來营搅,“玉大人,你說我怎么就攤上這事峡眶【绶溃” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵辫樱,是天一觀的道長峭拘。 經(jīng)常有香客問我,道長狮暑,這世上最難降的妖魔是什么鸡挠? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮搬男,結(jié)果婚禮上拣展,老公的妹妹穿的比我還像新娘。我一直安慰自己缔逛,他們只是感情好备埃,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著褐奴,像睡著了一般按脚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上敦冬,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天辅搬,我揣著相機與錄音,去河邊找鬼脖旱。 笑死堪遂,一個胖子當著我的面吹牛介蛉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溶褪,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼币旧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了竿滨?” 一聲冷哼從身側(cè)響起佳恬,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎于游,沒想到半個月后毁葱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡贰剥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年倾剿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚌成。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡前痘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出担忧,到底是詐尸還是另有隱情芹缔,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布瓶盛,位于F島的核電站最欠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惩猫。R本人自食惡果不足惜芝硬,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望轧房。 院中可真熱鬧拌阴,春花似錦、人聲如沸奶镶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厂镇。三九已至捺氢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剪撬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工悠反, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留残黑,地道東北人馍佑。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像梨水,于是被迫代替她去往敵國和親拭荤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 獨立磁盤冗余數(shù)組(RAID, Redundant Array of Independent Disks)簡稱硬盤陣...
    yekai閱讀 4,887評論 0 14
  • 海明(漢明)碼是廣泛采用的一種有效的校驗碼疫诽,它實際上是一種多重奇偶校驗碼舅世。 海明碼的原理就是在有效信息位中加入幾個...
    Julianlee107閱讀 17,685評論 0 6
  • 大家好!我是咩咩麻麻奇徒,我的采訪對象是繪畫小能手雏亚,為寶寶畫繪本的姜小靜同學(xué)。 為什么是小靜同學(xué)呢摩钙?這源于總?cè)?..
    Nicole_李孟洋閱讀 518評論 0 0
  • 1.先查看系統(tǒng)上有沒有安裝了舊版本的MySQL罢低,用下面的命令: rpm -qa | grep mysql 如果有,...
    小利同學(xué)閱讀 605評論 0 51
  • tyger老師的拼讀英語教的好胖笛,粉絲是那么的多网持,孩子們媽媽們家長們都非常喜歡。他的突破和革新是在認知方面:單詞是由...
    悅心心得閱讀 1,487評論 1 8