17.對(duì)一個(gè)二進(jìn)制數(shù)的各位數(shù)字重新編排,具體方法如下:每次取連續(xù)的8位二進(jìn)制數(shù),按以下方法進(jìn)行轉(zhuǎn)換:從第1個(gè)位置開(kāi)始,從1開(kāi)始數(shù)數(shù),數(shù)到m時(shí)取出該位數(shù)字(取出位置的數(shù)字不參與下次數(shù)數(shù)),從下一個(gè)位置開(kāi)始,繼續(xù)從1開(kāi)始數(shù)數(shù),數(shù)到m時(shí)取出該位數(shù)字(當(dāng)數(shù)到這8位二進(jìn)制數(shù)的第8個(gè)位置后回到第1個(gè)位置繼續(xù)數(shù)數(shù)),重復(fù)上述操作,直至這8位二進(jìn)制數(shù)的各個(gè)數(shù)字被取完。然后,依次把取出的8位數(shù)字拼接成新的二進(jìn)制數(shù)。用以上方法把整個(gè)二進(jìn)制數(shù)轉(zhuǎn)換完畢。
編寫(xiě)一個(gè)VB程序,實(shí)現(xiàn)功能如下:程序運(yùn)行時(shí)從文本框Text1中讀入一個(gè)二進(jìn)制數(shù)(長(zhǎng)度為8的倍數(shù)),從文本框Text2中讀入整數(shù)m,單擊“轉(zhuǎn)換”按鈕Command1,對(duì)輸如的二進(jìn)制數(shù)按上述方法轉(zhuǎn)換后在文本框Text3中顯示。程序運(yùn)行界面如圖所示。
(1)運(yùn)行上述程序,若在文本框Text1中輸入“11001100”。Text2中輸入“3”,單擊“確定”按鈕,則文本框Text3中顯示的內(nèi)容是
。
(2)實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)诋?huà)線(xiàn)處填入合適代碼。
Const n=100
Private Sub Commandl_Click( ?。?br />Dim a(1 To 8*n)As Integer.b(1 To 8*n)As Integer
Dim f(1 To 8)As Integer.c(1 To 8)As Integer
Dim m As Integer.s As String.res As String
Dim i As Integer.j As Integer.p As Integer
s=Text1.Text:m=Val (Text2,Text)
For i=1 To 8
f(i)=①
Nexi i
′以下代碼功能:根據(jù)整數(shù)m確定每一個(gè)字節(jié)二進(jìn)制數(shù)各位數(shù)字的出列順序
p=0
For i=1 To 7
Do While j<=n
②
If f(p)=1 Then j=j+1
Loop
f(p)=0:c(i)=p
Next i
For j=1 To 8
If f(j)=1 Then c(i)=j:Exit For
Next j
For i=1 To len(s)
a(i)=Val( Mid(s,i.1))
Next i
i=l:start=-8
Do Whilei<=Len(s)
If i Mor 8=1 Then③
b(i)=a(start+c((i-1)Mod 8+1))
i=i+1
Loop
res=“”
For i=1 To Len(s)
res=res+Chr(Asc(“0”)+b(i))
Nest i
Text3.Text=res
End Sub