What does it mean to reverse the bits of a number?
Reversing the bits of a number means flipping the order of its binary digits from left to right. For example, if the binary is 1011, reversing it gives 1101.
Click to reveal answer
beginner
How many bits do we usually consider when reversing bits of a number?
We usually consider a fixed number of bits, like 32 bits for standard integers, to keep the reversed number consistent in size.
Click to reveal answer
intermediate
What is the first step in reversing bits of a number using code?
The first step is to extract the least significant bit (rightmost bit) using bitwise AND with 1, then shift the reversed number to the left and add the extracted bit to build the reversed number.
Click to reveal answer
intermediate
Why do we shift the reversed number to the left during the bit reversal process?
We shift the reversed number left to make space for the next bit from the original number, effectively building the reversed bit sequence from left to right.
Click to reveal answer
intermediate
What is the time complexity of reversing bits of a fixed-size integer?
The time complexity is O(1) because the number of bits is fixed (like 32 or 64), so the operation takes constant time regardless of the number's value.
Click to reveal answer
What operation extracts the rightmost bit of a number?
ABitwise OR with 1
BBitwise AND with 1
CLeft shift by 1
DRight shift by 1
✗ Incorrect
Bitwise AND with 1 isolates the least significant bit (rightmost bit) of a number.
If the binary of a number is 1100, what is the reversed bit sequence?
A0011
B1100
C1001
D0110
✗ Incorrect
Reversing 1100 gives 0011 by flipping the bits order.
Why do we shift the original number to the right during bit reversal?
ATo double the number
BTo add a new bit
CTo reverse the bits automatically
DTo remove the bit already processed
✗ Incorrect
Shifting right removes the least significant bit that was already extracted.
What is the size of bits usually considered for reversing bits in a 32-bit integer?
A16 bits
B64 bits
C32 bits
D8 bits
✗ Incorrect
A 32-bit integer has 32 bits, so we reverse all 32 bits.
What is the final step after processing all bits in bit reversal?
AReturn the reversed number
BShift the reversed number right
CAdd 1 to the reversed number
DMultiply the reversed number by 2
✗ Incorrect
After processing all bits, we return the reversed number as the result.
Explain the step-by-step process to reverse the bits of a 32-bit number.
Think about how you build the reversed number bit by bit.
You got /6 concepts.
Why is reversing bits useful in computer science or programming?
Consider areas where binary data order matters.
You got /4 concepts.
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
Step 1: Understand bits as binary digits
Bits are the 0s and 1s that make up a number in binary form.
Step 2: Define reversing bits
Reversing bits means reading the bits from right to left instead of left to right, flipping their order.
Final Answer:
Flipping the order of all bits from left to right -> Option C
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
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.
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.
Final Answer:
Option A code correctly reverses bits -> Option A
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
Step 1: Convert 13 to 4-bit binary and reverse bits
13 in 4 bits is 1101. Reversing bits: 1011.
Step 2: Convert reversed bits back to decimal
1011 in binary is 8+0+2+1 = 11.
Final Answer:
11 -> Option D
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
Step 1: Check bit shifting logic
The code shifts extracted bits back to the same position i, not reversed (2 - i).
Step 2: Identify correct reversed position
For 3 bits, reversed position should be (2 - i) to flip bits order.
Final Answer:
It shifts bits to the same position instead of reversed position -> Option B
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
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).
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.
Final Answer:
Option A code correctly reverses bits and adds to original -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.