48 lines
1.3 KiB
Plaintext
48 lines
1.3 KiB
Plaintext
Sub setRightBits(bits() As Integer, e As Integer, n As Integer)
|
|
Dim As Integer i, j
|
|
|
|
If e = 0 Or n <= 0 Then Exit Sub
|
|
Dim bits2(1 To e) As Integer
|
|
For i = 1 To e : bits2(i) = bits(i) : Next
|
|
For i = 1 To e - 1
|
|
If bits(i) = 1 Then
|
|
j = i + 1
|
|
While j <= i + n And j <= e
|
|
bits2(j) = 1
|
|
j += 1
|
|
Wend
|
|
End If
|
|
Next i
|
|
For i = 1 To e : bits(i) = bits2(i) : Next
|
|
End Sub
|
|
|
|
Dim As Integer i, k, ub, n
|
|
Dim As String b = "010000000000100000000010000000010000000100000010000010000100010010"
|
|
Dim tests(8, 2) As String
|
|
tests(1, 1) = "1000": tests(1, 2) = "2"
|
|
tests(2, 1) = "0100": tests(2, 2) = "2"
|
|
tests(3, 1) = "0010": tests(3, 2) = "2"
|
|
tests(4, 1) = "0000": tests(4, 2) = "2"
|
|
tests(5, 1) = b: tests(5, 2) = "0"
|
|
tests(6, 1) = b: tests(6, 2) = "1"
|
|
tests(7, 1) = b: tests(7, 2) = "2"
|
|
tests(8, 1) = b: tests(8, 2) = "3"
|
|
For k = 1 To 8
|
|
Dim bits(1 To Len(tests(k, 1))) As Integer
|
|
For i = 1 To Len(tests(k, 1))
|
|
bits(i) = Val(Mid(tests(k, 1), i, 1))
|
|
Next i
|
|
ub = Ubound(bits)
|
|
n = Val(tests(k, 2))
|
|
Print Using "n = #; Width e = ##:"; n; ub
|
|
Print " Input b: "; tests(k, 1)
|
|
setRightBits(bits(), ub, n)
|
|
Print " Result: ";
|
|
For i = 1 To ub
|
|
Print Str(bits(i));
|
|
Next i
|
|
Print Chr(10)
|
|
Next k
|
|
|
|
Sleep
|