当前位置: 高中信息技术 / 综合题
  • 1. (2020·杭州模拟) 某编码由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。

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

    b.若校验值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. (1) 若按上述规则的7位编码为1001000,其中一位有错,则正确的编码应为
    2. (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+   ③  

       Else

         Outs = Outs + Mid(Text1.Text, i, 1)

       End If

        Next i

        Text2.Text = “第” + Str(m) + “位上数据有错误,正确编码应为:” + Outs

      End If

      End Sub

       ② ③ 

      加框处改正:

微信扫码预览、分享更方便