aboutsummaryrefslogtreecommitdiff
path: root/challenge-120/paulo-custodio/basic/ch-1.bas
blob: 615a05bf31c7763ca0ceb42c6b652de75d083dd8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
' Challenge 120
'
' TASK #1 - Swap Odd/Even bits
' Submitted by: Mohammad S Anwar
' You are given a positive integer $N less than or equal to 255.
'
' Write a script to swap the odd positioned bit with even positioned bit and
' print the decimal equivalent of the new binary representation.
'
' Example
' Input: $N = 101
' Output: 154
'
' Binary representation of the given number is 01 10 01 01.
' The new binary representation after the odd/even swap is 10 01 10 10.
' The decimal equivalent of 10011010 is 154.
'
' Input: $N = 18
' Output: 33
'
' Binary representation of the given number is 00 01 00 10.
' The new binary representation after the odd/even swap is 00 10 00 01.
' The decimal equivalent of 100001 is 33.

function swapBits(n as Integer) as Integer
    dim result as Integer, shift as Integer

    shift = 1
    do while n > 0
        if n mod 2 <> 0 then result = result + 2*shift
        n = n \ 2
        if n mod 2 <> 0 then result = result + 1*shift
        n = n \ 2
        shift = shift*4
    loop
    swapBits = result
end function

dim n as Integer

n = val(Command(1))
n = swapBits(n)
print n