题库 高中信息

题干

   某编码由4 个信息位和3 个校验位组成,通过对编码信息进行验算,能够检测并纠正一位错误代码。该7 位编码中b1~b4 为信息位,p1~p3 为校验位,位置如下:

编码中位

1

2

3

4

5

6

7

对位信息

p1

p2

b1

p3

b2

b3

b4

 

校验的方式如下,求校验值g1、g2、g3:

g1 = p1 Xor b1 Xor b2 Xor b4

g2 = p2 Xor b1 Xor b3 Xor b4

g3 = p3 Xor b2 Xor b3 Xor b4

其中Xor 为异或运算,规则是:0 Xor 0 =0,0 Xor 1 =1,1 Xor 0 =1,1 Xor 1 =0,

p1 Xor b1 是将p1、b1 转换为二进制后按位进行异或运算,如7 Xor 12 的结果为11。

(1)若计算得到的校验值g1、g2、g3 均为0,说明校验正确,数据无错误。例如:若7 位编码为1101001,计算校验值g1、g2、g3 值均为0,验证正确。

(2)若校验值g1、g2、g3 不全为0,说明数据有错,出错位置为g3g2g1(二进制数表示),纠错的方法是对错误的位进行取反,即“0”变“1”,“1”变“0”。例如:若7 位编码为1111001,计算校验值g1=1、g2=1、g3=0,不全为0,说明数据有错,错误位置在011(二进制数)位,即第3 位,原位置上“1”应为“0”,正确编码为1101001。

小明为此编写了VB 程序,程序运行时,在文本框Text1 中输入编码值,单击“校验”

按钮Command1 后,在文本框Text2 中输出运行结果,如图所示。


实现上述功能的 VB 程序如下,请回答下列问题:
(1)若按上述规则的7 位编码为1001000,其中一位有错,则正确的编码应为______________________。
(2)请在划线处填入合适的代码。
Function check(s As String) As Integer
Dim i As Integer, g1 As Integer, g2 As Integer, g3 As Integer
Dim c(1 To 7) As Integer
For i = 1 To 7
c(i) = Val(Mid(s, i, 1))
Next i
g1 = c(1) Xor c(3) Xor c(5) Xor c(7)
g2 = c(2) Xor c(3) Xor c(6) Xor c(7)
g3 = c(4) Xor c(5) Xor c(6) Xor c(7)
If g1 + g2 + g3 = 0 Then check = 0 Else check = __________
End Function
Private Sub Command1_Click()
Dim i As Integer, m As Integer, Outs As String
m = __________
If m = 0 Then
Text2.Text = "验证正确,数据无错误"
Else
For i = 1 To 7
If i = m Then
Outs = Outs + Chr( Asc(Mid(Text1.Text, i, 1)) Xor __________)
Else
Outs = Outs + Mid(Text1.Text, i, 1)
End If
Next i
Text2.Text = "第" + Str(m) + "位上数据有错误,正确编码应为:" + Outs
End If
End Sub
上一题 下一题 0.99难度 填空题 更新时间:2019-04-17 09:12:24

答案(点此获取答案解析)