BCD码、奇偶校验码、海明校验码

BCD码

十进制数用二进制编码的形式,通过专门的十进制数运算指令进行处理。计算机中有专门的逻辑线路在BCD码运算时使每4位二进制数按十进制进行处理。

每位十进制数的取值可以是0-9这十个数之一,因此,每一个十进制数位必须至少由4位二进制位来表示。而4位二进制位可以组合成16种状态,去掉10种状态后还有6种冗余状态,所以从16种状态中选取10种状态来表示十进制数位0-9的方法很多,可以产生多种BCD种。

8421码的映射关系:

在这里插入图片描述
4个二进制位 ------>16种不同的状态

BCD码值使用其中10种 ------>不同的映射方案

注:0000-1001分别对应0-9,进行加法后若超出该范围,则需+0110进行修正(强制向高位进1)

余3码:8421码+ ( 0011 ) 2 (0011)_2 (0011)2

在这里插入图片描述

2421码:改变权值定义

在这里插入图片描述
2、4、 2、 1分别对应,每一位的权值

表示0-4时最高位为0,表示5-9时最高位为1

奇偶校验码

几个简单的概念:

码字:由若干位代码组成的一个字

两个码字间的距离:将两个码字逐位进行对比,具有不同的位的个数

码距:一种编码方案可能有若干个合法码字,各合法码字间的最小距离

当码距d=1时,无检错能力;当d=2时,有检错能力;当d>=3,若设计合理,可能具有检错、纠错能力。

奇偶校验码

奇校验码:整个校验码(有效信息位和校验位)中“1”的个数为奇数

偶校验码:整个校验码(有效信息位和校验位)中“1”的个数为偶数

在这里插入图片描述
例:给出两个编码1001101和1010111的奇校验码和偶校验码。
设最高位为校验位,余7位是信息位,则对应的奇偶校验码为:
奇校验:11001101 01010111
偶校验:01001101 11010111

偶校验的硬件实现:各信息进行异或(模2加)运算,得到的结果即为偶校验位

⊕:异或(模2加)

0⊕0=0
0⊕1=1
1⊕0=1
1⊕1=0

求偶校验位:

1⊕0⊕0⊕1⊕1⊕0⊕1=0

1⊕0⊕1⊕0⊕1⊕1⊕1=1

进行偶校验(所有位进行异或,若结果为1说明出错):

0⊕1⊕0⊕0⊕1⊕1⊕0⊕1=0

海明校验码

偶校验:1010 ->01010,能发现奇数位错误,但无法确定是哪一位出错。

海明码设计思路:将信息位分组进行偶校验 ->多个校验位 ->多个校验位标注出错位置

信息位:n
校验位:k ------->2^k种状态
信息位+校验位:n+k
——————> 2^k>=n+k+1

其中n+k位中任何一位都可能出错,1表示1中正确状态
在这里插入图片描述
海明码求解步骤:

例:信息位:1010

1.确定海明码的位数:2^k>=n+k+1

n=4 ----> k=3
设信息位 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1(1010),共4位,校验位 P 3 P_3 P3 P 2 P_2 P2 P 1 P_1 P1,共3位,对应的海明码为 H 7 H_7 H7 H 6 H_6 H6 H 5 H_5 H5 H 4 H_4 H4 H 3 H_3 H3 H 2 H_2 H2 H 1 H_1 H1

2.确定校验位的分布

校验位 P i P_i Pi放在海明位号位2i-1 的位置上,信息位按顺序放在其余位置
在这里插入图片描述
3.求校验位的值

二进制:

H 3 H_3 H3:3 -->011

H 5 H_5 H5:5 -->101

H 6 H_6 H6:6 -->110

H 7 H_7 H7:7 -->111

将末尾为1的值进行偶校验:

P 1 P_1 P1= H 3 H_3 H3 H 5 H_5 H5 H 7 H_7 H7= D 1 D_1 D1 D 2 D_2 D2 D 4 D_4 D4=0⊕1⊕1=0

同理中间一位:

P 2 P_2 P2= H 3 H_3 H3 H 6 H_6 H6 H 7 H_7 H7= D 1 D_1 D1 D 3 D_3 D3 D 4 D_4 D4=0⊕0⊕1=1

第一位:

P 3 P_3 P3= H 5 H_5 H5 H 6 H_6 H6 H 7 H_7 H7= D 2 D_2 D2 D 3 D_3 D3 D 4 D_4 D4=1⊕0⊕1=0

在这里插入图片描述
4.纠错

对各个分组进行偶校验运算
校验方程:

S 1 S_1 S1= P 1 P_1 P1 D 1 D_1 D1 D 2 D_2 D2 D 4 D_4 D4

S 2 S_2 S2= P 2 P_2 P2 D 1 D_1 D1 D 3 D_3 D3 D 4 D_4 D4

S 3 S_3 S3= P 3 P_3 P3 D 2 D_2 D2 D 3 D_3 D3 D 4 D_4 D4

接收到:1010010

S 1 S_1 S1= P 1 P_1 P1 D 1 D_1 D1 D 2 D_2 D2 D 4 D_4 D4=0⊕0⊕1⊕1=0

S 2 S_2 S2= P 2 P_2 P2 D 1 D_1 D1 D 3 D_3 D3 D 4 D_4 D4=1⊕0⊕0⊕1=0

S 3 S_3 S3= P 3 P_3 P3 D 2 D_2 D2 D 3 D_3 D3 D 4 D_4 D4=0⊕1⊕0⊕1=0

海明码的检错、纠错能力:纠错——1位
检错——2位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值