汉明码(海明码)计算方法

汉明码是一种具有纠错功能的校验码.本文简单地介绍汉明码的计算方法.
汉明码的目的是能够纠正一位误码.假设信息码共有 n 位,汉明码共有 r 位,那么总共的码长为 n + r 位.为能检测出 n + r 位编码中其中一位的错误,汉明码必须能够表示至少 n + r + 1 种状态,其中 n + r 种表示 n + r 位编码中有一位错误,另外还需要一种来表示整个编码正确无误.则汉明码的长度需要满足下列关系:
2 r >= n + r + 1

校验位的确定

k个校验位是通过对m+k位复合码字进行奇偶校验而确定的。

其中:P1位负责校验海明码的第1、3、5、7、…(P1、D1、D2、D4、…)位,(包括P1自己)

P2负责校验海明码的第2、3、6、7、…(P2、D1、D3、D4、…)位,(包括P2自己)

P3负责校验海明码的第4、5、6、7、…(P3、D2、D3、D4、…)位,(包括P3自己)

3、5、7、9、11的二进制编码的第一位为1,所以3、5、7、9、11号位参加第一位校验位,

类似:3、6、7、10、11号位参加2号位校验,5、6、7号位参加4号位校验,9、10、11号位参加8号位校验

汉明码的纠错方式实际上是对传送后的汉明码形成新的检测位P 根据P的状态 直接找出错误

因此可得到三个校验方程及确定校验位的三个公式:(根据规则进行校验 如果是配偶原则P=0 配奇原则P=1)

P1=B1⊕B3⊕B5⊕B7

P2=B2⊕B3⊕B6⊕B7

P3=B4⊕B5⊕B6⊕B7

例 唐 计原的一道例题

注:汉明码常用来纠错一位的场合,若欲实现纠错2位,可以再增加一位就错位

时间: 2024-08-27 17:57:38

汉明码(海明码)计算方法的相关文章

海明码一篇文章彻底搞懂

海明码学习前提 记住几个要点: 不要用异或套用公式!!!!题目随便变几个变死你! 看完这篇博客不要看别的博客!!!!别的人瞎写的坑死你 学习海明码之前,我们要约定3个原则: 海明码只能检测出2位错,纠1位错(因此不要问如果3位错怎么办等幼稚问题). 海明码默认进行偶校验(除非特殊说明使用奇校验). 海明码是一串由0和1组成的序列(除01外没有其他的值,记住了!这是重点) 如果下面有任何无法理解的问题,反复看上面三个原则,下面再也不赘述. 前提:奇偶校验 奇校验:这串序列1的个数如果为偶数则在前面

海明码编码示例

在写编码步骤之前,先来熟悉几个表示符号: 编码规则 下面以8为数据位编码步骤为例: 一,确定D与P在海明码中的位置 海明码及数据位校验位对应表: 如上图,校验码是所在位置在第2^(n-1)的位置,当我们在表中填好校验位之后,剩下的数据位只要一次填写就行了. 二,确定校验关系 首先,先计算出校验位在海明码中的下标,便于后面的计算: 在表中将数据位下表都用8421表示出来,但是校验位不变: 从上图中,得出各个校验位所校验的位置 三,检验错误 根据上表,将各个偶校验位异或,得到错误位置. 小结:计算校

海明码的理解计算

海明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太网中,因为如果信道特性不好的情况下,出现的错误通常不是一位. 海明码的检错.纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反(原来是1就变成0,原来是0就变成1)来将其纠正. 根据海明码的纠错原理,得出了: m+k+1<=2K 其中:m表示有效的信息位数:k表示

能将0和1两个数字玩的如此传神!是个程序要都应该了解的海明码(通俗版)

得到海明码步骤: 一.确定校验码的位数k 二.确定校验码的位置 三.数据的位置 四.求出校验位的值 其中还需要一个公式的推导,好了,下面开始: 首先,海明码的作用是:在编码中如果有错误,可以表达出第几位出了错,二进制的数据只有0和1,修改起来很容易,求反即可,这需要加入几个校验位.对于一个m位的数据信息,到底应该加入几个呢?假设需要k个,那么编码之后应该是m+k位,这k个二进制数组成的数据能够表达的数值是2的k次方个,比如需要3个校验位,k=3,3位二进制数从000 . 001 .-- .111

海明校验码

原博地址:http://blog.csdn.net/yudandan10/article/details/11878421  计算机组成中的海明校验码,相信学过的都会有了解,那么对其中校验位的确定,我想似乎有些人不是很明白,今天我来详细的把如何确定校验位分享一下 首先看下基本的概念  : 2^r≥k+r+1 其中r为校验位 ,k为信息位  信息位是已知的,那么如何确定校验位呢,用一个例子来说明 例如:二进制码1011  求它的海明编码 步骤如下: 1.首先确定信息位,也就是1011了,那么随之K

计组_海明校验码

原理: 在数据中加入几个校验码,并把数据的每一个二进制位分配在几个奇偶校验组中. 设:校验位的个数为r,能表示2^r个信息,1个表示“没错误”, 2^r -1个指出错误发生在哪一位. k= 2^r –1-r个信息可用于纠正数据位. 2^r≥k+r+1 若要检测并纠正一位错,同时发现两位错,r,k应满足下列关系: 2^r-1≥k+r      (见表3.8) 校验位和数据位是如何排列的 校验位排列在  2^(i–1) (i =0,1,2,…)的位置上 例:有一个编码 为D4D3D2D1,由此生成一

计算机组成原理的【海明校验码】(软考)

具体的原理可以直接百度不多说,直接写怎么解决 一.前提: 数据位中仅有一位出错,这是海明码产生的依据 二.异或运算 相同为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

(转)海明校验码--确定校验位

转自 :http://blog.csdn.net/yudandan10/article/details/11878421 计算机组成中的海明校验码,相信学过的都会有了解,那么对其中校验位的确定,我想似乎有些人不是很明白,今天我来详细的把如何确定校验位分享一下 首先看下基本的概念  : 2^r≥k+r+1 其中r为校验位 ,k为信息位  信息位是已知的,那么如何确定校验位呢,用一个例子来说明 例如:二进制码1011  求它的海明编码 步骤如下: 1.首先确定信息位,也就是1011了,那么随之K的长

常用校验码(奇偶校验,海明校验,CRC)学习总结

常用校验码(奇偶校验,海明校验,CRC)学习总结 一.为什么要有校验码? 因为在数据存取和传送的过程中,由于元器件或者噪音的干扰等原因会出现错误,这个时候我们就需要采取相应的措施,发现并纠正错误,对于错误的检测和校正,大多采取"冗余校验"的思想,即除原数据外,额外增加若干位编码,这些新增的代码称为校验位. 二.数据是如何校验的? 输入的数据m经过f得到p校验位. 数据m和校验位一起通过存储器或传输线路,分别得到m'和p',这两者可能和m,f相同,也可能由于传输储存发生问题而不同. 由数