53 lines
1.3 KiB
Plaintext
53 lines
1.3 KiB
Plaintext
Global Dim bits.i(1)
|
|
|
|
Procedure setRightBits(Array bits(1), e, n)
|
|
Protected.i i, j
|
|
|
|
If e = 0 Or n <= 0: ProcedureReturn: EndIf
|
|
Dim bits2(e)
|
|
For i = 0 To e - 1 : bits2(i) = bits(i) : Next
|
|
For i = 0 To e - 2
|
|
If bits(i) = 1
|
|
j = i + 1
|
|
While j <= i + n And j < e
|
|
bits2(j) = 1
|
|
j + 1
|
|
Wend
|
|
EndIf
|
|
Next i
|
|
For i = 0 To e - 1 : bits(i) = bits2(i) : Next
|
|
EndProcedure
|
|
|
|
OpenConsole()
|
|
Define.i i, k, ub, n
|
|
Define b.s = "010000000000100000000010000000010000000100000010000010000100010010"
|
|
Dim tests.s(8, 2)
|
|
tests(0, 0) = "1000": tests(0, 1) = "2"
|
|
tests(1, 0) = "0100": tests(1, 1) = "2"
|
|
tests(2, 0) = "0010": tests(2, 1) = "2"
|
|
tests(3, 0) = "0000": tests(3, 1) = "2"
|
|
tests(4, 0) = b: tests(4, 1) = "0"
|
|
tests(5, 0) = b: tests(5, 1) = "1"
|
|
tests(6, 0) = b: tests(6, 1) = "2"
|
|
tests(7, 0) = b: tests(7, 1) = "3"
|
|
|
|
For k = 0 To 7
|
|
ReDim bits(Len(tests(k, 0)))
|
|
For i = 0 To Len(tests(k, 0)) - 1
|
|
bits(i) = Val(Mid(tests(k, 0), i + 1, 1))
|
|
Next i
|
|
ub = ArraySize(bits())
|
|
n = Val(tests(k, 1))
|
|
PrintN("n = " + Str(n) + "; Width e = " + Str(ub))
|
|
Print(" Input b: " + tests(k, 0))
|
|
setRightBits(bits(), ub, n)
|
|
PrintN("")
|
|
Print(" Result: ")
|
|
For i = 0 To ub - 1
|
|
Print(Str(bits(i)));
|
|
Next i
|
|
PrintN(Chr(10))
|
|
Next k
|
|
PrintN(#CRLF$ + "Press ENTER to exit"): Input()
|
|
CloseConsole()
|