首页 > 编程知识 正文

奇偶校验码怎么用,奇偶校验原理

时间:2023-05-06 02:16:41 阅读:154509 作者:807

在8位数据d(D7~D0 )中,他的算法如下。

D ^=D 4;

D ^=D 2;

D ^=D 1;

D=1;

最后d是偶检查的值。

可能有些同学一时还不知道算法的原理,在这里说明一下吧。

首先,在d中查找两个位D1和D0。 并且D1D0的偶数检验值E0=D1^D0。 这个大家都知道。 并且还有D3和D2的检验值E1=D3^D2,同样也有E2=D5^D4和E3=D7^D6。

在E0=1的情况下,表示在D1和D0中有奇数个1,E1、E2和E3也同样;

然后复习一下小学的数学吧。 奇数*奇数=奇数,偶数*奇数=偶数

如果E0和E1中有奇数个1,则D3~D0中有奇数个1,此时D3~D0偶数检验值为1;

“如果E0和E1中有奇数个1的话”这句话的意思不是求E1和E0组成的二进制数的偶检吗? 此外,当E1E0的偶检测值F0=1时,对应的D3~D0的偶检测值也为1。

同样,在E3E2的偶检测值F1=1的情况下,对应的D7~D4的偶检测值也为1;

类似地,如果由F1和F0构成的2位二进制偶检测G0=1,则对应的是E3~E0的偶检测值为1,同时对应的D7~D0的偶检测值为1。

于是,求出D7~D0的偶检测值,就是求出F1F0的偶检测值。

首先,将D7~D0的8比特按2分组后,分别求出异或,接着,将得到的值的4比特按2分组求出异或,对最后得到的值的2比特进行异或,得到的值为D7~D0的偶数校验值

分组化不一定必须相邻,将d向右偏移4位,取得与原d的异或就很简单了

D7——D3

D6——D2

D5——D1

D4——D0

这样,每次向右移位后与原始值进行异或时,最终都会得到d的检查值。 另外,在计算过程中,只需关注后面的位数即可。 像第二次计算一样,前4位有一些数据,最后7位也有数据,但这些数据已经没用了,请最后来一个。

因此,文章开头的8位二进制数的算法如下。

D ^=D 4;

D ^=D 2;

D ^=D 1;

D=1;

另外,对于2^N位的二进制数,在第1次右移(2^N )/2位后取异或,重复n次同样的计算即可。

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