天天看點

網絡工程師-海明碼

本文隻是介紹對于m位資料使用海明碼編碼,沒有對原理進行詳細介紹,相關知識還請查閱其他文章。

了解不對的地方,還望大家指正。

1.奇校驗與偶校驗

奇校驗:傳送的資料,1的個數為奇數個;

偶校驗:傳送的資料,1的個數有偶數個。

2.基本準則

對于m位的資料,使用k位進行校驗,滿足的基本關系是:

m+k+1 < 2^k

是以,傳送的資料總共有m+k 位

3.海明碼校驗

第一步:k個校驗位位置确定

資料排列從1開始,即1,2,3,4.........(m+k),其中

k個校驗位,所在的位置分别是2^0,2^1,2^2......2^(k-1),即1,2,4,8,16.....2^(k-1)

m個資料位按照原來的順序插入到剩餘位置。

第二步:k個校驗位數值确定

對于第1個校驗位,所在位置是2^(1-1)=2^0=1,檢驗的資料位所在位置是(1),3,5,7,9......

對于第2個校驗位,所在位置是2^(2-1)=2^1=2,檢驗的資料位所在位置是(2),3,6,7,10,11......

對于第3個校驗位,所在位置是2^(3-1)=2^2=4,檢驗的資料所在的位置是(4),5,6,7,12,13,14,15.....

可以得出,對于第k個校驗位而言:

所在位置是2^(k-1)

每次檢驗的資料的個數是2^(k-1)

本次檢驗與前一次檢驗,位置間隔,相差2^k

第k個校驗位的數值是其所檢驗的資料位簡單相加,若是采用偶校驗,資料位的1的個數為偶數,則為0,否則為1;若是采用奇校驗,1的個數為偶數則為1,奇數則為0;

4.執行個體

資料位11001100,計算其海明碼,采用偶校驗。

第一步:根據公式m+k+1 < 2^k,其中m=8,可知k=4,是以總共有4個校驗位+8個資料位=12位

第二步:确定校驗位所在的位置,根據第k個校驗位所在位置是2^(k-1),可知4個校驗位所在位置分别是2^(1-1)=1,2^(2-1)=2,2^(3-1)=4,2^(4-1)=8;

第三步:畫圖

索引下表 1 2 3 4 5 6 7 8 9 10 11 12
資料位 1 1 1 1
檢驗位 1 1
資料編碼 1 1 1 1 1 1

如圖,把資料位放在編碼後對應的位置,現在我們計算校驗位的值。

根據:

對于第k個校驗位而言:(1)所在位置是2^(k-1);(2)每次檢驗的資料的個數是2^(k-1);(3)本次檢驗與前一次檢驗,位置間隔,相差2^k;

第1個校驗位,所在位置 2^(1-1)=1,每次檢驗2^(1-1)=1個資料位,間隔是2^1=2,由此可知,

第1個校驗位檢驗資料是(1),3,5,7,9,11,13,15.....,是以可知其值P1=1+1+0+1+0=1;

第2個校驗位,所在位置2^(2-1)=2,每次檢驗2^(2-1)=2個資料位,間隔是2^2=4,由此可知,

第2個校驗位檢驗的資料是(2),3,6,7,10,11,14,15......,是以可知其值P2=1+0+0+1+0=0;

第3個校驗位,所在位置 2^(3-1)=4,每次檢驗2^(3-1)=4個資料位,間隔是2^3=8,由此可知,

第3個校驗位檢驗資料是(4),5,6,7,12,13,14,15......,是以可知其值P3=1+0+0+0=1;

第4個校驗位,所在位置2^(4-1)=8,每次檢驗2^(4-1)=8個資料位,間隔是2^4=16,由此可知,

第4個校驗位檢驗的資料是(8),9,10,11,12,13,14,15,24,25......,是以可知其值P4=1+1+0+0=0;

是以,最後傳送的資料編碼是:101110001100

繼續閱讀