408 海明校驗(yàn)碼

海明校驗(yàn)碼,可檢測(cè)2位錯(cuò),糾正1位錯(cuò)
數(shù)據(jù)位數(shù):n,即1010有4位,n=4
不等式計(jì)算:n+k+1≤2^k,表示有(n+k)個(gè)只錯(cuò)1位的錯(cuò)誤情況,和1個(gè)正確的情況,這些需要小于等于校驗(yàn)碼能夠顯示的數(shù)量,即2^k。通過計(jì)算4+k+1≤2^k得k=3
校驗(yàn)位數(shù):k,即3
校驗(yàn)位位置:2^m,m∈[0,n)。這里用P表示,P1在2^0即1號(hào),P2在2^1即2號(hào),P3在2^2即4號(hào)。
奇偶校驗(yàn):默認(rèn)偶校驗(yàn),通過為0,不通過為1

①原數(shù)據(jù)位+校驗(yàn)位數(shù)一共有4+3=7,先列7個(gè)數(shù)
②將1~7用二進(jìn)制表示出來
③P1所在1號(hào)位二進(jìn)制001,最后一位有1,將除P1所在的其他位置最后一位有1的列舉出來;同理P2找中間為1的,P3找首位為1的

④將原編碼1010填在除校驗(yàn)位以外的位置。把③中的列舉的位置對(duì)應(yīng)寫出來,如P1列舉是3 5 7,則對(duì)應(yīng)的是1 0 0。
⑤將④中對(duì)應(yīng)出來的數(shù)字進(jìn)行異或處理(不同為1,相同為0),得出最后一列P1~P3的異或值。

海明碼=②中列舉的1~7對(duì)應(yīng)的值=1011010
為什么有的P放在后面,有的放在前面,這需要根據(jù)題目來確定
題目給出D8~D1為10101011,這里給的是降序,因此計(jì)算的時(shí)候也要降序處理
數(shù)據(jù)位數(shù):n=8
不等式計(jì)算:n+k+1≤2^k,k=4
校驗(yàn)位數(shù):k,即4
校驗(yàn)位位置:2^m,m∈[0,n)。這里用P表示,P1在2^0即1號(hào),P2在2^1即2號(hào),P3在2^2即4號(hào),P4在2^3即8號(hào)

①原數(shù)據(jù)位+校驗(yàn)位數(shù)一共有8+4=12,先列12個(gè)數(shù),這里使用降序
②將12~1用二進(jìn)制表示出來
③P1所在1號(hào)位二進(jìn)制001,最后一位有1,將除P1所在的其他位置第四位有1的列舉出來;同理P2找第三位為1的,P3找第二位為1的,P4找第一位為1的。(有的找出來5個(gè),有的找出來4個(gè),數(shù)量不一樣沒關(guān)系)
④將原編碼10101011填在除校驗(yàn)位以外的位置(由于原編碼給的就是倒敘,這里正常從左至右填寫即可)。把③中的列舉的位置對(duì)應(yīng)寫出來,如P1列舉是3 5 7 9 11,則對(duì)應(yīng)的是1 1 1 0 0。
⑤將④中對(duì)應(yīng)出來的數(shù)字進(jìn)行異或處理(不同為1,相同為0),得出最后一列P1~P4的異或值。

海明碼=②中列舉的12~1對(duì)應(yīng)的值=101001011111