Bird
Raised Fist0
DSA Pythonprogramming~20 mins

Reverse Bits of a Number in DSA Python - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Bit Reversal Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of reversing bits of 13 in 8-bit representation?
Given the 8-bit binary representation of the number 13, what is the decimal value after reversing its bits?
DSA Python
def reverse_bits(n, bits=8):
    result = 0
    for _ in range(bits):
        result = (result << 1) | (n & 1)
        n >>= 1
    return result

print(reverse_bits(13))
A176
B212
C134
D104
Attempts:
2 left
💡 Hint

Think about the binary form of 13: 00001101. Reverse the bits and convert back to decimal.

❓ Predict Output
intermediate
2:00remaining
What is the output of reversing bits of 1 in 4-bit representation?
What decimal number results from reversing the bits of 1 using 4 bits?
DSA Python
def reverse_bits(n, bits=4):
    result = 0
    for _ in range(bits):
        result = (result << 1) | (n & 1)
        n >>= 1
    return result

print(reverse_bits(1, 4))
A2
B4
C1
D8
Attempts:
2 left
💡 Hint

1 in 4 bits is 0001. Reverse bits and convert to decimal.

🔧 Debug
advanced
2:00remaining
What error does this code raise when reversing bits?
Identify the error raised by this code snippet when reversing bits of 5 in 3 bits:
DSA Python
def reverse_bits(n, bits=3):
    result = 0
    for i in range(bits):
        result = (result << 1) | (n & 1)
        n = n >> 1
    return result

print(reverse_bits(5))
ANo error, output is 5
BIndexError
CSyntaxError
DTypeError
Attempts:
2 left
💡 Hint

Check if the code runs without exceptions and what output it produces.

❓ Predict Output
advanced
2:00remaining
What is the output of reversing bits of 19 in 5-bit representation?
Calculate the decimal value after reversing the 5-bit binary representation of 19.
DSA Python
def reverse_bits(n, bits=5):
    result = 0
    for _ in range(bits):
        result = (result << 1) | (n & 1)
        n >>= 1
    return result

print(reverse_bits(19, 5))
A13
B25
C22
D17
Attempts:
2 left
💡 Hint

19 in 5 bits is 10011. Reverse bits and convert to decimal.

🧠 Conceptual
expert
2:00remaining
How many bits are needed to reverse bits of the number 1023 correctly?
To reverse the bits of the number 1023 correctly, how many bits should be used in the reversal process?
A16 bits
B8 bits
C10 bits
D12 bits
Attempts:
2 left
💡 Hint

Think about the binary length of 1023.

Practice

(1/5)
1. What does reversing the bits of a number mean in simple terms?
easy
A. Multiplying the number by 2
B. Changing all 0 bits to 1 bits
C. Flipping the order of all bits from left to right
D. Adding 1 to the number

Solution

  1. Step 1: Understand bits as binary digits

    Bits are the 0s and 1s that make up a number in binary form.
  2. Step 2: Define reversing bits

    Reversing bits means reading the bits from right to left instead of left to right, flipping their order.
  3. Final Answer:

    Flipping the order of all bits from left to right -> Option C
  4. Quick Check:

    Reverse bits = flip order [OK]
Hint: Think of bits as beads on a string flipped end to end [OK]
Common Mistakes:
  • Confusing reversing bits with flipping bits (0 to 1)
  • Thinking reversing bits means adding or multiplying
  • Assuming reversing bits changes the number's value directly
2. Which of the following Python code snippets correctly reverses the bits of an 8-bit number n?
easy
A. reversed_num = 0 for i in range(8): reversed_num |= ((n >> i) & 1) << (7 - i)
B. reversed_num = 0 for i in range(8): reversed_num |= ((n << i) & 1) << i
C. reversed_num = n << 8
D. reversed_num = n >> 8

Solution

  1. Step 1: Analyze bit extraction and placement

    reversed_num = 0 for i in range(8): reversed_num |= ((n >> i) & 1) << (7 - i) extracts each bit from right to left and places it reversed from left to right.
  2. Step 2: Check other options for correctness

    reversed_num = 0 for i in range(8): reversed_num |= ((n << i) & 1) << i shifts bits incorrectly; C and D just shift without reversing bits.
  3. Final Answer:

    Option A code correctly reverses bits -> Option A
  4. Quick Check:

    Shift right, mask, shift left reversed position [OK]
Hint: Use bit shifts and masks to pick and place bits reversed [OK]
Common Mistakes:
  • Using left shift instead of right shift to extract bits
  • Not shifting bits to reversed positions
  • Confusing bitwise OR with addition
3. What is the output of the following Python code?
def reverse_bits(n):
    result = 0
    for i in range(4):
        result |= ((n >> i) & 1) << (3 - i)
    return result

print(reverse_bits(13))  # 13 in binary is 1101
medium
A. 13
B. 7
C. 14
D. 11

Solution

  1. Step 1: Convert 13 to 4-bit binary and reverse bits

    13 in 4 bits is 1101. Reversing bits: 1011.
  2. Step 2: Convert reversed bits back to decimal

    1011 in binary is 8+0+2+1 = 11.
  3. Final Answer:

    11 -> Option D
  4. Quick Check:

    1101 reversed = 1011 = 11 [OK]
Hint: Reverse bits visually, then convert back to decimal [OK]
Common Mistakes:
  • Not reversing bits correctly (reading left to right)
  • Confusing binary to decimal conversion
  • Using wrong bit length for reversal
4. Find the error in this code that attempts to reverse bits of a 3-bit number n:
def reverse_bits(n):
    result = 0
    for i in range(3):
        bit = (n >> i) & 1
        result |= bit << i
    return result
medium
A. It uses wrong bitwise AND operator
B. It shifts bits to the same position instead of reversed position
C. It does not initialize result to zero
D. It uses range(3) instead of range(4)

Solution

  1. Step 1: Check bit shifting logic

    The code shifts extracted bits back to the same position i, not reversed (2 - i).
  2. Step 2: Identify correct reversed position

    For 3 bits, reversed position should be (2 - i) to flip bits order.
  3. Final Answer:

    It shifts bits to the same position instead of reversed position -> Option B
  4. Quick Check:

    Shift bits to reversed index, not original [OK]
Hint: Shift bits to (bit_length - 1 - i) for reversal [OK]
Common Mistakes:
  • Shifting bits back to original position
  • Forgetting to reverse bit positions
  • Incorrect loop range for bit length
5. You want to reverse the bits of a 5-bit number n and then add it to the original number. Which Python code correctly does this?
hard
A. def reverse_bits(n): result = 0 for i in range(5): result |= ((n >> i) & 1) << (4 - i) return result print(n + reverse_bits(n))
B. def reverse_bits(n): result = 0 for i in range(5): result |= ((n << i) & 1) << i return result print(n - reverse_bits(n))
C. def reverse_bits(n): return n << 5 print(n + reverse_bits(n))
D. def reverse_bits(n): return n >> 5 print(n + reverse_bits(n))

Solution

  1. Step 1: Verify bit reversal logic for 5 bits

    def reverse_bits(n): result = 0 for i in range(5): result |= ((n >> i) & 1) << (4 - i) return result print(n + reverse_bits(n)) correctly reverses bits by shifting each bit from position i to (4 - i).
  2. Step 2: Check addition of reversed bits to original

    def reverse_bits(n): result = 0 for i in range(5): result |= ((n >> i) & 1) << (4 - i) return result print(n + reverse_bits(n)) prints sum of n and reversed bits, matching the problem requirement.
  3. Final Answer:

    Option A code correctly reverses bits and adds to original -> Option A
  4. Quick Check:

    Reverse bits with correct shifts, then add [OK]
Hint: Reverse bits by shifting to (bit_length - 1 - i), then add [OK]
Common Mistakes:
  • Using left shift instead of right shift for extraction
  • Subtracting instead of adding reversed bits
  • Incorrect bit length or shift positions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard