1
1
def show_bits (before : int , after : int ) -> str :
2
- return f"{ before } : { before :08b} \n { after } : { after :08b} "
2
+ """
3
+ >>> print(show_bits(0, 0xFFFF))
4
+ 0: 00000000
5
+ 65535: 1111111111111111
6
+ """
7
+ return f"{ before :>5} : { before :08b} \n { after :>5} : { after :08b} "
3
8
4
9
5
10
def swap_odd_even_bits (num : int ) -> int :
@@ -11,29 +16,29 @@ def swap_odd_even_bits(num: int) -> int:
11
16
3. Finally, we combine the swapped even and odd bits using a bitwise OR operation
12
17
to obtain the final result.
13
18
>>> print(show_bits(0, swap_odd_even_bits(0)))
14
- 0: 00000000
15
- 0: 00000000
19
+ 0: 00000000
20
+ 0: 00000000
16
21
>>> print(show_bits(1, swap_odd_even_bits(1)))
17
- 1: 00000001
18
- 2: 00000010
22
+ 1: 00000001
23
+ 2: 00000010
19
24
>>> print(show_bits(2, swap_odd_even_bits(2)))
20
- 2: 00000010
21
- 1: 00000001
25
+ 2: 00000010
26
+ 1: 00000001
22
27
>>> print(show_bits(3, swap_odd_even_bits(3)))
23
- 3: 00000011
24
- 3: 00000011
28
+ 3: 00000011
29
+ 3: 00000011
25
30
>>> print(show_bits(4, swap_odd_even_bits(4)))
26
- 4: 00000100
27
- 8: 00001000
31
+ 4: 00000100
32
+ 8: 00001000
28
33
>>> print(show_bits(5, swap_odd_even_bits(5)))
29
- 5: 00000101
30
- 10: 00001010
34
+ 5: 00000101
35
+ 10: 00001010
31
36
>>> print(show_bits(6, swap_odd_even_bits(6)))
32
- 6: 00000110
33
- 9: 00001001
37
+ 6: 00000110
38
+ 9: 00001001
34
39
>>> print(show_bits(23, swap_odd_even_bits(23)))
35
- 23: 00010111
36
- 43: 00101011
40
+ 23: 00010111
41
+ 43: 00101011
37
42
"""
38
43
# Get all even bits - 0xAAAAAAAA is a 32-bit number with all even bits set to 1
39
44
even_bits = num & 0xAAAAAAAA
@@ -50,4 +55,4 @@ def swap_odd_even_bits(num: int) -> int:
50
55
51
56
doctest .testmod ()
52
57
for i in (- 1 , 0 , 1 , 2 , 3 , 4 , 23 , 24 ):
53
- print (show_bits (i , swap_odd_even_bits (i )), " \n " )
58
+ print (show_bits (i , swap_odd_even_bits (i )), ' \n ' )
0 commit comments