最近準(zhǔn)備參加計(jì)算機(jī)軟件與理論考試,做題時(shí)遇到了海明碼,著實(shí)讓人頭痛重窟,接下來(lái)分享一下自己的學(xué)習(xí)心得!
海明碼
? ? ? 海明碼又稱(chēng)漢明碼惧财,是1950年?貝爾實(shí)驗(yàn)室的Richard?Hamming設(shè)計(jì)而成的巡扇,屬于奇偶檢驗(yàn)一類(lèi),其構(gòu)成方法為:在數(shù)據(jù)位之前插入K個(gè)校檢位垮衷,通過(guò)擴(kuò)大碼距來(lái)實(shí)現(xiàn)檢錯(cuò)和糾錯(cuò)厅翔!
在開(kāi)始學(xué)習(xí)之前,我們先了解一下幾個(gè)概念:
1.碼距:指在一個(gè)編碼系統(tǒng)當(dāng)中搀突,任意兩個(gè)合法編碼至少有多少個(gè)二進(jìn)制位不同刀闷。
2.異或:異或是一個(gè)數(shù)學(xué)運(yùn)算符。它應(yīng)用于邏輯運(yùn)算仰迁。異或的數(shù)學(xué)符號(hào)為“⊕”甸昏,計(jì)算機(jī)符號(hào)為“xor”。其運(yùn)算法則為:a⊕b = (?a ∧ b) ∨ (a ∧?b)徐许,簡(jiǎn)單來(lái)說(shuō)施蜜,就是兩個(gè)值相同為0,不同為1.
繼續(xù)我們的學(xué)習(xí)雌隅。上面說(shuō)到n位校驗(yàn)碼翻默,那么n值如何確定呢?
假設(shè)我們的數(shù)據(jù)位為k恰起,校檢位為n修械,那么N和K應(yīng)當(dāng)滿(mǎn)足以下關(guān)系:
? ? ? ? ? ? ? ? ? ?2?-1≥n+k
n值通常取滿(mǎn)足上式的最小值。
知道了n值的取法检盼,我們接著說(shuō)海明碼的編碼規(guī)則:
? ? 設(shè)有n個(gè)校檢位P?,P?,...,Pn,有K個(gè)數(shù)據(jù)位為D0,D1,D2,...,Dn-2,Dn-1,那么對(duì)應(yīng)的海明碼應(yīng)該為H1,H2,...,Hn+k,有:
? ? 1.校驗(yàn)碼在海明碼中的位置:校驗(yàn)碼Pj與海明碼Hi應(yīng)當(dāng)滿(mǎn)足Pj在海明碼的第2^i個(gè)位置肯污,即有Pj=Hi,則有 j=2^i,其余位置由數(shù)據(jù)位按照從高到低占據(jù)海明碼中的剩余位置。例如當(dāng)數(shù)據(jù)位K=8時(shí),要使?2?-1≥n+k仇箱,則n≥4县恕,取最小值4,按照上述規(guī)則剂桥,可以確定校驗(yàn)碼在海明碼中的位置:
H1≈抑颉H2 H3∪ǘ骸H4∶朗H5 H6≌遛薄H7∈病H8 H9】氨酢H10】杪H11 H12
P1「は洹P2《羟恰D0 P3》⒈省D1∶巳D2 D3×颂帧P4∧砑ぁD4 D5 ∏凹啤D6 “贰D7
? ?2.確定校驗(yàn)關(guān)系:被校驗(yàn)的海明位的下標(biāo)等于所有參與該位的校驗(yàn)碼的下標(biāo)之和,校驗(yàn)碼則自校残炮。如下表:
?
確定位置及其校驗(yàn)方式之后韭赘,則到了最關(guān)鍵的一步缩滨,檢測(cè)錯(cuò)誤势就。檢測(cè)方法:
S1=P1⊕D0⊕D3⊕D4⊕D6
S2=P2⊕D0⊕D2⊕D3⊕D5⊕D6
S3=P3⊕D1⊕D2⊕D3⊕D7
S4=P4⊕D4⊕D5⊕D6⊕D7
? ? ? 根據(jù)以上式子,若采用偶校驗(yàn)脉漏,當(dāng)S1S2S3S4全為0時(shí)則表示接收到的數(shù)據(jù)無(wú)誤(奇校驗(yàn)時(shí)為1)苞冯,且S1S2S3S4的十進(jìn)制數(shù)表示了錯(cuò)誤發(fā)生的位置。
以上就是我學(xué)習(xí)海明碼的心得侧巨,我是個(gè)菜鳥(niǎo)舅锄,很多地方不足,希望大家指教K境馈;史蕖畴蹭!