c语言 奇偶校验算法,求助 奇偶校验的C语言编程

本文探讨了一种利用奇偶校验实现单位错误检测与纠正常规,通过将四位信息编码成三组,每组进行一次校验,指误字与出错位序号对应,即使一位错误也能定位并修复。编码示例和校验原理详细解释,同时涉及海明码距和编码电路设计概念。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

将代码按照一定的规律组织成若干小组,分组进行

奇偶校验。各组的校验结果组成一个指误字(指出错误

的代码字),不仅能检测是否出错,而且在只有一位出

错的情况下指出是那位错,从而将该位自动变反纠正(

也可设计为检测两位错,纠正一位错)

(1)检测并纠正一位错(以偶校验为例)

设:待编码信息4位 D1D2D3D4

(a)分成几组,增设多少个校验位

k+r≤2r-1

GrGr-1…. G3G2G1

0 0 …. 0 0 0

0 0 …. 0 0 1

………………….

1 1 ….. 1 1 1

4+r≤2r-1

r≥3 取 r=3

(符合条件的最小值)

(b)分组方法

*让指误字代码与出错位的序号相同

*每个校验位只参加一组奇偶校验

号 1 2 3 4 5 6 7 指误

P1 P2 D1 P3 D2 D3 D4

3 √ √ √ √ G3

2 √ √ √ √ G2

1 √ √ √ √ G1

G3 G2 G1 值

0 0 0 0

0 0 1 1

0 1 0 2

0 1 1 3

1 0 0 4

1 0 1 5

1 1 0 6

1 1 1 7

(c)编码举例

有效信息D1 D2 D3 D4

1 0 1 0

第1组P1 D1 D2 D4

1 1 0 0

第2组P2 D1 D3 D4

0 1 1 0

第3组P3 D2 D3 D4

1 0 1 0

代码

1 2 3 4 5 6 7

P1 P2 D1 P3 D2 D3 D4

1 0 1 1 0 1 0

(d)校验举例

代码 1 2 3 4 5 6 7

P1 P2 D1 P3 D2 D3 D4

1 0 1 1 1 1 0

假定第5位(D2)

发生错误

第1组

P1 D1 D2 D4

1 1 1 0 G1=1

第2组

P2 D1 D3 D4

0 1 1 0 G2=0

第3组

P3 D2 D3 D4

1 1 1 0 G3=1

G3G2G1=101=(5)10

(d)思考:

*海明校验的码距是多少

d=3

*编码与校验电路

(实质:分组奇偶校验,每个信号多次使用)

*校验位和数据位的位置

*G3G2G1≠0 是否一定是一位错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值