標籤:電腦 軟考 海明校正碼 組成原理
具體的原理可以直接百度不多說,直接寫怎麼解決
一、前提:
資料位元中僅有一位出錯,這是海明碼產生的依據
二、異或運算
相同為0,不同為1,異或的符號為“xor”或者“⊕”,例如:1 xor 1 = 0,1 xor 0 = 1
三、基本公式
2^r≥k+r+1
其中r為校正位 ,k為資訊位 資訊位是已知的
四、具體例子
1、 求(1101)2的海明碼
(1) 首先求出校正的位元和位置
位元:根據公式計算,校正位元最小為3
位置:2^n(位置一般為2的n次方,1、2、4、8、16等等)
(2) 把校正位插入到資訊位中
設:D0D1D2D3 = 1101,b1b2b3是3個校正位,H1、H2、H3、H4、H5、H6、H7是所有的位置,則有如下的表:
位置 |
H1 |
H2 |
H3 |
H4 |
H5 |
H6 |
H7 |
資訊位 |
|
|
D0 |
|
D1 |
D2 |
D3 |
校正位 |
b1 |
b2 |
|
b3 |
|
|
|
(3) 確定校正位
確定規則:要想校正第幾位(i),那麼就等於校正位所在位置的加和
例如:需要校正H3,則H3 = b1+b2
所以,我們可以得到下面的校正位表:
位置 |
佔用的校正位號 |
備忘 |
H1 |
b1 |
1 = 1 |
H2 |
b2 |
2 = 2 |
H3 |
b2,b1 |
3 = 2 + 1 |
H4 |
b3 |
4 = 4(注意H4位置有校正位b3) |
H5 |
b3,b1 |
5 = 4 + 1 |
H6 |
b3,b2 |
6 = 4 + 2 |
H7 |
b3,b2,b1 |
7 = 4 + 2 + 1 |
(4) 確定每個校正位都校正了哪些位置
b1:H1、H3、H5、H7
b2:H2、H3、H6、H7
b3:H4、H5、H6、H7
則結果是:
b1 = H3 xor H5 xor H7 = 1 xor 1 xor 1 = 1
b2 = H3 xor H6 xor H7 = 1 xor 0 xor 1 = 0
b3 = H5 xor H6 xor H7 = 1 xor 0 xor 1 = 0
把這三個校正碼插入得到海明碼:1010101
2、題目:
資訊位為01101110,四個檢驗位C1.C2.C3.C4C1應使1,3,5,7,9,11位中的“1”的個數為偶數; C2應使2,3,6,7,10,11位中的“1”的個數為偶數; C4應使4,5,6,7,12位中的“1”的個數為偶數; C8應使8,9,10,11,12位中的“1”的個數為偶數
這是百度知道的一個問題,在這裡解釋一下:
“1”的個數為偶數代表最後異或的值為0,比如我們有2個“1”或者4個“1”異或,肯定得到0
我們設了4個校正位C1、C2、C3、C4,插入到資訊位中會得到如下:
位置 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
資訊位 |
|
|
0 |
|
1 |
1 |
0 |
|
1 |
1 |
1 |
0 |
校正位 |
C1 |
C2 |
|
C3 |
|
|
|
C4 |
|
|
|
|
所以,根據題意的資訊:
1、3、5、7、9、11位中的“1”的個數為偶數則異或結果肯定為0:C1 xor 0 xor 1 xor 0 xor 1 xor 1 = 0,可以得到C1 = 1
依次也可以得到其它的值
參考連結:http://zhidao.baidu.com/link?url=3qbO3xiK1bERUaC8cAb9bRZopokZGO4zKSMW9_HwaaULXMURwLfOZxOFwmifhFo3ZVKD7ZYrS46sck25v4nD0_
電腦群組成原理的【海明校正碼】(軟考)