408 海明校验码

海明校验码,可检测2位错,纠正1位错
数据位数:n,即1010有4位,n=4
不等式计算:n+k+1≤2^k,表示有(n+k)个只错1位的错误情况,和1个正确的情况,这些需要小于等于校验码能够显示的数量,即2^k。通过计算4+k+1≤2^k得k=3
校验位数:k,即3
校验位位置:2^m,m∈[0,n)。这里用P表示,P1在2^0即1号,P2在2^1即2号,P3在2^2即4号。
奇偶校验:默认偶校验,通过为0,不通过为1

①原数据位+校验位数一共有4+3=7,先列7个数
②将1~7用二进制表示出来
③P1所在1号位二进制001,最后一位有1,将除P1所在的其他位置最后一位有1的列举出来;同理P2找中间为1的,P3找首位为1的

④将原编码1010填在除校验位以外的位置。把③中的列举的位置对应写出来,如P1列举是3 5 7,则对应的是1 0 0。
⑤将④中对应出来的数字进行异或处理(不同为1,相同为0),得出最后一列P1~P3的异或值。

海明码=②中列举的1~7对应的值=1011010
为什么有的P放在后面,有的放在前面,这需要根据题目来确定
题目给出D8~D1为10101011,这里给的是降序,因此计算的时候也要降序处理
数据位数:n=8
不等式计算:n+k+1≤2^k,k=4
校验位数:k,即4
校验位位置:2^m,m∈[0,n)。这里用P表示,P1在2^0即1号,P2在2^1即2号,P3在2^2即4号,P4在2^3即8号

①原数据位+校验位数一共有8+4=12,先列12个数,这里使用降序
②将12~1用二进制表示出来
③P1所在1号位二进制001,最后一位有1,将除P1所在的其他位置第四位有1的列举出来;同理P2找第三位为1的,P3找第二位为1的,P4找第一位为1的。(有的找出来5个,有的找出来4个,数量不一样没关系)
④将原编码10101011填在除校验位以外的位置(由于原编码给的就是倒叙,这里正常从左至右填写即可)。把③中的列举的位置对应写出来,如P1列举是3 5 7 9 11,则对应的是1 1 1 0 0。
⑤将④中对应出来的数字进行异或处理(不同为1,相同为0),得出最后一列P1~P4的异或值。

海明码=②中列举的12~1对应的值=101001011111