首页 > 编程知识 正文

汉明码配奇原则是什么,婆罗谜文字

时间:2023-05-06 18:50:11 阅读:148311 作者:2508

请注明出处。 谢谢你。

最近复习汉明码,学习计算机构成原理的时候学的,老师说的真的很水。 于是过了好几个月,我再次用“人语”解释了什么是汉明码。 我最讨厌故意的说明,很难理解,不能理解==,能不能说别人的话。

不知道的欢迎信息评论是~

要理解汉明码,首先需要知道“奇偶校验”。 这很简单。

我们约定一系列代码中1的个数为偶数个,这一系列代码中携带的信息是正确的。 否则就错了。

首先,可以通过在这一系列代码中添加校验码来实现奇偶校验。

for example :

因为我们想传输10010的串扰,所以在传输的时候,传输010010。 其中,开头的0是奇偶校验位。

因为我们想传输10000的串扰,所以在传输的时候,传输110000。 其中,开头的1是奇偶校验位。

两个例子中1的个数都是偶数。

是的,以后会说汉明码。

首先,汉明码是采用奇偶校验的代码。 这采用了非常巧妙的方法,将这些数字串分成组,通过分组检查来判断哪个位数有错误。

第一个问题是错误检测的原理。 其原理可以用一个例子来说明。

在传输中,可能性最高的是只弄错1位的数据,

汉明码默认的一系列数据只错了一位数。 假设我们想传达这一列的数据1234567,我们先把他们分成小组。 当然,如何分组将在后面讨论。

请注明出处

P1组: 1、2、3、4

P2组: 2、4、5、7

P3组: 3、4、6、7

tips :你最好把这张图用在你的运算纸上^_^,很方便哦~

我们约定了如果哪个组错了,就给这个组做一个标记。

请记住。 只有一个数据是错误的。 例如,在这次的情况下,P1组中有一个错了。 P2小组没错。 P3小组没错。

那么,现在来看图吧。 让我们来看看。

在P2组,每个人都可以毫无疑问地排除2、4、5、7这个数据

在P3组,每个人都可以毫无疑问地排除3、4、6、7这个数据;

那么我们可以看到P1组有错误。 那是经过P2,P3组的数据排除后,很容易发现1这个数据有错误。

是的,那么我们讨论了弄错一个组的情况,弄错两组的情况怎么样?

假设P1中有错误,P2中有错误,P3全部正确

是,以下哪项数据同时属于P1和P2,但不属于P3? 是的,看图,数据是2。

那么,三个组的情况怎么样?

同时属于P1、P2、P3组的数据是谁? 是的,数据是4。

是的,这个分组,这个方式很爽吗? 所谓汉明码,就是利用了这样的分组。 这样,就可以很容易地分辨出哪些数据是错误的。 能够检测出这种数据错误的能力称为“错误检测”。 请务必将其与“纠错”分开。 错误检测只能检测错误,并不一定能纠正错误。 可以进行纠错。

知道那张图的原理就好了,但现在要扔了。

下一个问题,校验码的位置。 这是记住这一点,在采用汉明码的一系列数据中,在2的I次方的位置放入校验码。

校验码为1或0,使具有校验码的组中的1的个数为偶数。

图:

绿色的位置是放置校验码的地方,1、2、4、8、16……等等,2的I次方的地方。

下一个问题,汉明码是怎么分组的? 其实我发现有些数据在P1组和P2组都有。

怎么分组,这个请记住。 没有任何原理。

应该事先做的工作是,

将表示位置的此数转换为二进制数。

也就是说,

第一个位置是第0001个位置;

第二个位置是第0010个位置;

成为第三个位置,0011个位置;

第四个位置是第0100个位置;

第五个位置,成为第0101个位置;

第六个位置是第0110个位置;

那么,规则来了

当位置符合该格式时,XXX1属于P1;

位置符合该形式的属于XX1X、P2;

位置符合该形式的归属于X1XX,P3;

如果位置符合该格式,则归属于1XXX,P4;

那么,各校验码也分为各组。 而且,每组只有一个校验码。 (这个太简单了,所以不说明……)

成分好了的话,校验码的值也确定下来。 (数组中应该有几个1 )

好的,为了让你不明白,举个例子吧。

我们想传达这个代码: XX1X101X011

一共11人。

带x的是校验码的位置,我们暂时不知道那个值是多少。

位置1、3、5、7、9、11的数据进入P1组。 (转换这些位置的二进制文件后,可以看到他们的位置符合XXX1。)

位置2、3、6、7、10、11的数据进入P2组

。(位置符合XX1X)

位置在4,5,6,7的数据进到P3组。(位置符合X1XX)

位置在8,9,10,11的数据进到P4组。(位置符合1XXX)

那么确定了分组,校验码的值也就顺便确定下来了。

这样整个串的码就确定下来了。

 

现在知道汉明码是怎么分组的了吗?对,通过位置数的性质。

 

 

好,下两个问题。

从发送者的角度,我该怎么发用上汉明码的数据呢?

首先我们考虑我们到底要发多少位。假设校验码一共k位,我们想发的原始数据一共n位,要注意我们的校验码也要校验校验码错没错,所以,要校验的一共有k+n位,k位校验码可以检测2^k位的码,但是不能所以,校验码的位数要满足这个公式

,或者说

这样我们就能算出来要用多少校验码了。

其实哈,实际上不用这么麻烦,教科书总是那么复杂。假设你想发101011111,那你就先占下校验位,然后空着的位填你想发的数据就好。

占下1,2,4,8……等等位,看能占下多少位就可以,当然这个手算比较直观啦哈。

好,我假设你填完了,然后分好组,也确定了校验位的值了,那么发送出去啦~

嘟嘟嘟~~~~~~~

 

 

我是接收者,我收到了一串汉明码,怎样用汉明码的性质来检错呢?

1.分组,分好P1,P2,P3……

(2020年更正错误,各位看官不好意思了,下面的都是对的。)

2.分别对每个组校验,没有错的给它0,有错的给1.

3.记得第一个问题,汉明码的原理吗?你可能会想,3个组,我们可以画3个圈,可是100个组,这个圈可就太难画了啊!

这里有一个等价的方法,hamming真的太聪明了。

把P从大到小排列起来,得到一串1010,

for example:

         组别:        P5   P4   P3   P2   P1

         标志:         1      0      1     0     1

从大到小排列起来,标志排成了一串一零串。这个数就是出错的数据的位置。

本例中,10101位置上的位错了,换成十进制是第21个位置上的数错了。

然后,我们发现了它错误的位置,又因为它是二进制的,不是0就是1,所以,可以顺便把它纠错。

 

好了,这样,我就全都讲完了……………………

你可以随便写一串101010101010101010,从接收方的角度,解这一串汉明码,很好玩的。

加油哦~~~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。