Bird
Raised Fist0
DSA Goprogramming~5 mins

Reverse Bits of a Number in DSA Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does it mean to reverse the bits of a number?
Reversing the bits means flipping the order of all bits in the binary form of the number, so the first bit becomes the last, the second becomes the second last, and so on.
Click to reveal answer
beginner
In Go, how can you extract the least significant bit of a number?
You can use the bitwise AND operation with 1: bit = num & 1. This gives the rightmost bit of the number.
Click to reveal answer
intermediate
Why do we shift bits when reversing bits of a number?
Shifting bits helps move bits to their new positions. Left shift moves bits to higher positions, right shift moves bits to lower positions, allowing us to build the reversed number step by step.
Click to reveal answer
intermediate
What is the time complexity of reversing bits in a fixed-size integer?
The time complexity is O(1) because the number of bits is fixed (like 32 or 64), so the operation always takes the same amount of steps.
Click to reveal answer
beginner
Show the Go code snippet to reverse bits of a 32-bit unsigned integer.
func reverseBits(num uint32) uint32 { var result uint32 = 0 for i := 0; i < 32; i++ { result <<= 1 result |= num & 1 num >>= 1 } return result }
Click to reveal answer
What operation extracts the rightmost bit of a number?
Anum & 1
Bnum | 1
Cnum << 1
Dnum >> 1
In reversing bits, what does shifting the result left by 1 do?
AMoves bits to the right
BExtracts the least significant bit
CClears the bits
DMoves bits to the left to make space for the next bit
How many times do you need to loop to reverse bits of a 32-bit number?
A32
B16
C64
DDepends on the number
What is the result of reversing bits of 0 (all bits zero)?
AUndefined
BAll bits one
C0
DSame as input
Which Go operator shifts bits to the right?
A<<
B>>
C&
D|
Explain step-by-step how to reverse the bits of a 32-bit unsigned integer.
Think about how you build the reversed number bit by bit.
You got /5 concepts.
    Write a Go function to reverse bits of a 32-bit unsigned integer and explain how it works.
    Focus on bit extraction and building the reversed number.
    You got /6 concepts.

      Practice

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

      Solution

      1. Step 1: Understand bit representation

        Numbers are stored as bits (0s and 1s) in a sequence from left (most significant) to right (least significant).
      2. Step 2: Define reversing bits

        Reversing bits means taking the bit sequence and flipping it so the first bit becomes last, second becomes second last, and so on.
      3. Final Answer:

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

        Reverse bits = flip order [OK]
      Hint: Reverse bits means flip their order, not flip values [OK]
      Common Mistakes:
      • Confusing reversing bits with bitwise NOT (flip 0s and 1s)
      • Thinking reversing bits means adding or subtracting
      • Mixing reversing bits with shifting bits
      2. Which Go code snippet correctly reverses bits of a 8-bit unsigned integer n?
      easy
      A. var rev uint8 = 0 for i := 0; i < 8; i++ { rev = rev >> 1 rev |= n & 1 n <<= 1 }
      B. var rev uint8 = 0 for i := 0; i < 8; i++ { rev |= (n & 1) << i n >>= 1 }
      C. var rev uint8 = 0 for i := 0; i < 8; i++ { rev += n & 1 n <<= 1 }
      D. var rev uint8 = 0 for i := 0; i < 8; i++ { rev <<= 1 rev |= n & 1 n >>= 1 }

      Solution

      1. Step 1: Analyze bit reversal logic

        We shift rev left to make space, add the least significant bit of n, then shift n right to process next bit.
      2. Step 2: Check code correctness

        var rev uint8 = 0 for i := 0; i < 8; i++ { rev <<= 1 rev |= n & 1 n >>= 1 } correctly shifts rev left, ORs with n's last bit, then shifts n right. Others either shift wrong direction or add bits incorrectly.
      3. Final Answer:

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

        Shift rev left + add n's LSB + shift n right = correct [OK]
      Hint: Shift rev left, add n's last bit, shift n right each loop [OK]
      Common Mistakes:
      • Shifting rev right instead of left
      • Shifting n left instead of right
      • Adding bits without shifting rev
      3. What is the output of this Go code snippet?
      func reverseBits(n uint8) uint8 {
        var rev uint8 = 0
        for i := 0; i < 8; i++ {
          rev <<= 1
          rev |= n & 1
          n >>= 1
        }
        return rev
      }
      
      fmt.Println(reverseBits(13))

      Note: 13 in binary is 00001101.
      medium
      A. 176
      B. 11
      C. 101
      D. 208

      Solution

      1. Step 1: Convert 13 to binary and reverse bits

        13 in 8 bits: 00001101. Reversing bits: 10110000.
      2. Step 2: Convert reversed bits back to decimal

        10110000 binary = 128 + 32 + 16 = 176 decimal.
      3. Final Answer:

        176 -> Option A
      4. Quick Check:

        Reverse(00001101) = 10110000 = 176 [OK]
      Hint: Reverse bits visually, then convert binary to decimal [OK]
      Common Mistakes:
      • Confusing bit order and reversing incorrectly
      • Calculating decimal from wrong binary
      • Ignoring leading zeros in 8-bit representation
      4. Find the error in this Go function that tries to reverse bits of a 4-bit number:
      func reverse4Bits(n uint8) uint8 {
        var rev uint8 = 0
        for i := 0; i < 4; i++ {
          rev |= (n & 1) << i
          n >>= 1
        }
        return rev
      }
      medium
      A. The shift operator should be >> instead of <<
      B. The loop should run 8 times for 4-bit numbers
      C. The bits are not reversed; they are copied in the same order
      D. Variable rev should be int, not uint8

      Solution

      1. Step 1: Understand the code logic

        The code shifts bits of n right, then sets rev bits by shifting left by i, which copies bits in same order.
      2. Step 2: Identify why bits are not reversed

        Reversing bits requires shifting rev left each time and adding n's last bit, not shifting by i.
      3. Final Answer:

        The bits are not reversed; they are copied in the same order -> Option C
      4. Quick Check:

        Shifting rev by i copies bits, not reverses [OK]
      Hint: Shift rev left each loop to reverse bits, not shift by i [OK]
      Common Mistakes:
      • Confusing bit copying with reversing
      • Wrong loop count for bit size
      • Incorrect variable types for bits
      5. You want to reverse bits of a 16-bit unsigned integer and then check if the reversed number is a palindrome in binary (reads same forwards and backwards). Which approach is correct?
      hard
      A. Reverse bits using a loop, then compare reversed number with original
      B. Reverse bits using a loop, then reverse again and compare with original
      C. Check if original number equals reversed number without reversing bits
      D. Shift bits left and right alternately without reversing

      Solution

      1. Step 1: Reverse bits of the number

        Use a loop to reverse all 16 bits to get reversed number.
      2. Step 2: Check if reversed number is a palindrome

        To verify if reversed reads the same forwards and backwards, compute reverse(reversed) and check if it equals reversed. Since reverse(reversed) = original, this is equivalent to comparing reversed with original.
      3. Final Answer:

        Reverse bits using a loop, then compare reversed number with original -> Option A
      4. Quick Check:

        reversed == original iff reversed is palindrome [OK]
      Hint: Reverse once, then compare reversed with original [OK]
      Common Mistakes:
      • Double reversing and comparing to original (always true, doesn't check palindrome)
      • Trying to check equality without computing the reverse
      • Using shifting without proper bit reversal
      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