bit_manipulation.swap_all_odd_and_even_bits

Functions

show_bits(→ str)

swap_odd_even_bits(→ int)

Module Contents

bit_manipulation.swap_all_odd_and_even_bits.show_bits(before: int, after: int) str
>>> print(show_bits(0, 0xFFFF))
    0: 00000000
65535: 1111111111111111
bit_manipulation.swap_all_odd_and_even_bits.swap_odd_even_bits(num: int) int
  1. We use bitwise AND operations to separate the even bits (0, 2, 4, 6, etc.) and odd bits (1, 3, 5, 7, etc.) in the input number.

  2. We then right-shift the even bits by 1 position and left-shift the odd bits by 1 position to swap them.

  3. Finally, we combine the swapped even and odd bits using a bitwise OR operation to obtain the final result.

>>> print(show_bits(0, swap_odd_even_bits(0)))
    0: 00000000
    0: 00000000
>>> print(show_bits(1, swap_odd_even_bits(1)))
    1: 00000001
    2: 00000010
>>> print(show_bits(2, swap_odd_even_bits(2)))
    2: 00000010
    1: 00000001
>>> print(show_bits(3, swap_odd_even_bits(3)))
    3: 00000011
    3: 00000011
>>> print(show_bits(4, swap_odd_even_bits(4)))
    4: 00000100
    8: 00001000
>>> print(show_bits(5, swap_odd_even_bits(5)))
    5: 00000101
   10: 00001010
>>> print(show_bits(6, swap_odd_even_bits(6)))
    6: 00000110
    9: 00001001
>>> print(show_bits(23, swap_odd_even_bits(23)))
   23: 00010111
   43: 00101011