海明码从左往右和从右往左,海明码从左往右和从右往左怎么区分

http://www.itjxue.com  2023-01-21 16:57  来源:未知  点击次数: 

海明码到底是从右往左写还是从左往右写

写不写成成反向排列的信息位+反向排列的冗余位和单纯的编码没多大关系,可能会和具体的数据传输要求有关.

监督关系式和一致校验矩阵的选择有关.

对于4位信息位 冗余位的第一位即7 6 5 4 3 2 1 中的7的确是由数据位的1,2,4位进行异或(偶校验)编码得到的.

海明码第一位检验位是左边还右边?检验位的位数如何确定?各个检验位是1还是0怎么确定?

其实从左或者右开始是没有规定的,这个取决于你怎么看这个编码序列,但是一般习惯都是从左往右读的(PS:我也见过反过来编码的),当然了检测位只能是在1,2,4,8,16...这些位,把这些位都置为1即可

海明码,谢谢

做海明码最容易理解的方法就是画一个校验码公式表:

先说下海明码怎么形成,(因为你给的原始数据为8位,加4位冗余,12位我的表格就画不下了,表格对不齐你也不便理解~)

所以下面假设的是接收端收到的、以包含原数据+校验位的数据是01101001,现在对恢复原始数据,剔除校验做解释:

信息数据为01101001,校验码4位

位数?8?7?6?5?4?3?2?1

信息位?/?I4?I3?I2?/?I1?/?/

校验位?r3?/?/?/?r2?/?r1?r0

以上即校验公式表,三行八列,?“/”的地方为空。

将原始数据填入表中,于是得到:

位数?8?7?6?5?4?3?2?1

信息位?/?1?1?0?/?0?/?/

校验位?0?/?/?/?1?/?0?1

即把原始数据从右到左,对应填入表中。比如原始数据最右边一位是1,就在表的位数行1的非“/”处填1;从右数第二位是0,就在表中位数行2的下面非“/”处填0,第三位是0,在表中行数为3的下面非“/”处填0.....

即表中?I4?I3?I2?I1?就是原始数据,对应01101001的7?6?5?3位,1100

表中r4?r3?r2?r1?就是校验位,对应01101001的8?4?2?1位?0101

回到原问题,对01101001编码,只需扩充表格为12列的就可

信息位行中?2的n次方?处为空,即1?2?4?8?16处为“/”

校验位行中?2的n次方?处为有效位?即1?2?4?8?16处为r4?r3?r2?r1

解释完毕,不知道能不能理解~

计算机组成原理汉明码纠错

汉明码的检测码的p1计算的是C1位所在的第一组偶(奇)校验是否出错,有错就是1否则为0,p2计算的是C2位配置的第二组偶(奇)校验是否出错,有错就是1否则为0,,p3计算的是C3位配置的第三组偶(奇)校验是否出错,有错就是1,否则为0。p1,p2,p3他们的下标减1之后代表他们实际上的二进制的位权。所以p1p2p3计算出来是110,而答案是p3p2p1是011反着写表示十进制的3,也就是指出接收到汉明码第3位出错。这里的3是指这个接收到的汉明码从左往右数的第3位。这是因为汉明码编码时候就是从左往右编码的,序号分别是1,2,3,4,5,6... 再回顾2^k=N+k+1这个汉明码编码公式限制条件,N是实际数据位数,插入的k位检测位它的二进制组合能表示的2^k要求不仅能检测出N位代码的某一位出错的N种情况,还有全不出错的这种情况1,同时也能检测出插入的k位检测位是否出错。所以2^k要求大于等于N+k+1,否则编码距离不能覆盖整个汉明码的长度。同时我们也知道了,每个插入的检测位所在组在纠错的时候求的p1,p2,p3都是对应有位权的。

我回答了你的问题了吗?

(责任编辑:IT教学网)

更多

相关服务器空间文章

推荐服务器空间文章