软件设计师练习-校验码

1. 利用海明码纠正单位错,如果有6位信息位,则需要加入()位冗余位。

A 2

B 3

C 4

D 5

分析:

海明码需要满足一个基本条件:

冗余位数量 r 要使得下面这个不等式成立:

2r(2的r次方)≥m+r+1

其中:

m 是信息位数量(题目给的是 6 位)

r是冗余位数量

咱们代进去试试看:

m=6

试探一下:

r = 2:

2的2次方=4<6+2+1=9(不行)

r = 3:

2的3次方=8<6+3+1=10(还是不行)

r = 4:

2的4次方=16≥6+4+1=11(可以了!)

2. 循环冗余校验码(Cyc1ic Redundancy Check,CRC)是数据通信领域中最常用的一种差错校验码,该校验法中,使用多项式除法(模2除法)运算后的余数为校验字段。若数据信息为n位,则将其左移k位后,被长度为k+1位的生成多项式相除,所得的k位余数即构成k个校验位,构成n+k位编码。若数据信息为1100,生成多项式为X3+X+(即1011),则CRC编码是()。

A 1100010

B 1011010

C 1100011

D 1011110

分析:

已知:

数据信息:1100 (共4位,n=4)

生成多项式:X³ + X + 1 → 二进制为 1011(共4位,对应k=3)

所以:我们将数据左移3位(即后面补3个0)得到 1100000

步骤1:模2除法(不进位的除法)

我们要做的是:

对 1100000 除以 1011(即生成多项式),取余数。


模2除法(手动来):

1011 )1100000 第一步:看前4位 -> 1100 1100 ⊕ 1011 = 0111 (异或运算) 带下一个0,得到 1110 1110 ⊕ 1011 = 0101 带下一个0,得到 1010 1010 ⊕ 1011 = 0001 带下最后一个0,得到 010 (注意被除数位数小于除数,不再除) 最终余数:**010**


步骤2:将余数作为校验位,拼接到原始数据后面:

原始数据:1100

余数(校验位):010

所以最终的 CRC编码 为:1100010

3. 海明码利用奇偶性检错和纠错,通过在n个数据之间插入k个检验位,扩大数据编码的码距。若n=32,则k应为()。

A 4

B 5

C 6

D 7

分析:【海明码检验位数量公式】  2的k次方≥n+k+1

其中:

n=32(信息位)

k 是我们要求的冗余位(检验位)

代入计算,暴力尝试即可:

尝试 k = 4:

2的4次方=16<32+4+1=37❌

尝试 k = 5:

2的5次方=32<37❌

尝试 k = 6:

2的6次方=64≥39✅

已经满足条件!

4. 使用海明码对长度为8位的数据进行检错和纠错时,若能纠正一位错,则校验位至少为()。

A 3

B 4

C 5

D 6

分析:设校验位的位数为k,数据位的位数为n,海明码能纠正一位错应满足关系2^k>=n+k+1,n=8,当k=4时,2^4>8+4+1,符合要求,所以校验位至少为4。

5. 已知数据信息为32位,最少应附加()位校验位,才能实现海明码纠错。同时想要实现校验,海明码的码距至少为()。请回答第一个问题

A 3

B 4

C 5

D 6

分析:2^r ≥ r + k + 1

6. 已知数据信息为32位,最少应附加()位校验位,才能实现海明码纠错。同时想要实现校验,海明码的码距至少为()。请回答第二个问题

A 2

B 3

C 1

D 没有要求

分析:在一个码组内,要检测e个误码,要求的最小码距应该满足:d>=e+1;在一个码组内,要纠正t个误码,要求的最小码距应该满足:d>=2t+1;同时纠错检错:d>=e+t+1

7. 海明码利用奇偶性检错和纠错,通过在n个数据位之间插入k个检验位,扩大数据编码的码距。若n=32,则k应该为()。

A 3

B 4

C 5

D 6

分析:设校验位的位数为k,数据位的位数为n,海明码能纠正一位错应满足关系2^k>=n+k+1,n=32,当k=6时

2^6>32+6+1,符合要求,所以校验位至少为6。

8. 循环冗余校验码(CRC)利用生成多项式进行编码。设数据位为n,校验位为k位,则CRC码的格式为()。

A k个校验位按照指定间隔位与n个数据位混淆

B k个校验位之后跟n个数据位混淆

C n个数据位之后跟k个校验位

D k个校验位等间隔的放入n个数据位中

分析:

🧠 基本原理回顾:

CRC 的编码过程是这样的:

原始数据位 n:记作一个二进制串 D

附加 k 个 0 到数据后面(相当于乘以 2k2^k2k)

用生成多项式 G(x) 对这个新串(长度为 n+k)做模 2 除法

得到的 余数 R 是 CRC 校验码,长度为 k 位

最终发送的是:原始数据位 D + 校验位 R

简答题:

9. 哪种校验码采用模2运算?

答:循环冗余校验码(CRC)

分析:

因为 CRC 编码的本质,就是把数据多项式和生成多项式 在 GF(2)(即模2域)上进行模 2 除法,这里的除法全程使用的是 异或(XOR) 操作:

加法 = 异或(XOR)

减法 = 异或(XOR)

没有进位,没有借位,全是“0变1,1变0”的纯异或操作

10. 对于海明码,设数据位n位,校验位是k位,则n和k必须满足的关系式是?

答:设数据位是n位,校验位是K位,则n和k必须满足以下关系:2^K>n+k+1

分析:设数据位是n位,校验位是K位,则n和k必须满足以下关系:2^K>n+k+1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值