学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.40
所属科目:高中信息技术
对n位二进制数进行海明码编码(n是8的倍数),以8位二进制数为一段,每段插入4位校验位,构成12位二进制数,依次处理,完成各段数据编码。
每段海明码编码方法如下:
插入二进制位:在第1、2、4、8位置上插入4个二进制位r1、r2、r3、r4,初值为0。把原8位二进制数d1~d8从左往右依次填入剩余位置中,原数据位和插入的二进制位如图a所示:

图a
计算插入的校验位的值:把每个位置号转换成4位二进制数,选出形如“***1”(“*”表示一位0或1)的位置号,则统计这些位置号对应数据位中的“1”的个数,若是奇数,则r1为1,否则为0;再选出形如“**1*”的位置号,则统计这些位置号对应数据位中的“1”的个数,若是奇数,则r2为1,否则为0;以此类推……
如8位二进制数“10101101”的编码过程如下:
【1】插入4个二进制位,初值为0,剩余位置依次填入原数据位,如图b所示。

图b
【2】计算插入的校验位的值,选出形如“***1”的位置号,即1、3、5、7、9、11,统计这些位置号对应数据位中“1”的个数为2,故r1=0,同理可得:r2=1,r3=0,r4=1,如图c所示。

图c
【3】按位置号从小到大依次拼接各数据位得到最后编码“011001011101”。
(1)若要计算校验位r2的值,需统计位置号为_________的数据位中1的个数(依次填整数表示的位置号,用逗号分隔)。
(2)编写VB程序实现上述功能,代码如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, m As Integer
Dim s As String, ch As String, result As String
Dim a(1 To 12) As Integer, n(1 To 4) As Integer
Dim b(1 To 8) As Integer
b(1) = 3: b(2) = 5: b(3) = 6: b(4) = 7
b(5) = 9: b(6) = 10: b(7) = 11: b(8) = 12 '编码数据的插入位置
s = Text1.Text: result = ""
For i = 1 To Len(s) \ 8
For j = 1 To 12
a(j) = 0
Next j
For j = 1 To 8
ch = Mid(s, (i - 1) * 8 + j, 1)
     ____                 '把编码数据插入相应位置
Next j
For j = 1 To 4
n(j) = 0
Next j
For j = 1 To 12
m = j
For k = 1 To 4
      If m Mod 2 = 1 Then ____
      m = m \ 2
Next k
Next j
For j = 1 To 4
a(2 ^ (j - 1)) = ____
Next j
For j = 1 To 12
result = result + Chr(Asc("0") + a(j))
Next j
Next i
Text2.Text = result
End Sub
编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交