单选题 假设有一个12位的海明码(采用偶校验编码,且最多只有1位发生错误),其十六进制的值为ACFH,请问原来的值是______。
  • A.EFH
  • B.AFH
  • C.4FH
  • D.BFH
【正确答案】 B
【答案解析】[解析] 先将编码后的数据换成二进制形式。十六进制ACFH转换为二进制为1010 1100 1111。其次,列出数据与位置的对应表,如下表所示。
{{B}}数据与位置的对应表{{/B}}
数据 1 0 1 0 1 1 0 0 1 1 1 1
位置 M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12
其中,第1、2、4、8位为校验位,其余位为数据位。
不妨设出错位为e1、e2、e3、e4,怎么确定e1、e2、e3、e4与数据位的关系呢?M1下标中的1可以表示成0001,这里的0001分别对应e4、e3、e2、e1(倒过来看),由于e1的值为1,所以M1只和e1有关。M3下标中的3可以表示成0011,所以M3和e1、e2有关;M7下标中的7可以表示成0111,所以M7和e1、e2、e3有关。其他以此类推,只需要将这些有关的用异或符号?连接起来即可,最后可得如下公式:
e1=M1M3M5M7M9M11=1011011=1
e2=M2M3M6M7M10M11=011011=0
e3=M4M5M6M7M12=01101=1
e4=M8M9M10M11M12=01111=0
按照e4、e3、e2、e1的排列方式得到的二进制序列为0101,恰好是二进制5,只需要把第五位取反即可,最后的正确信息为1010 0100 1111,然后删除校验位,即第1、2、4、8位,最后得到原始的数据位为1010 1111,转换成十六进制为AFH。