blob: b9eb2f6f6b14e9d620e16ebcaacee87336aee1d5 (
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
44
45
46
47
48
|
#!/usr/bin/bc -ql
/*
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.
*/
scale = 0
n = read()
define swap_bits(n) {
auto out, shift
out = 0
shift = 1
while (n > 0) {
if ((n % 2) != 0) { out = out + (2 * shift); }
n = n / 2
if ((n % 2) != 0) { out = out + (1 * shift); }
n = n / 2
shift = shift * 4;
}
return out;
}
out = swap_bits(n)
out
quit
|