Bird
Raised Fist0
DSA Javascriptprogramming~20 mins

Reverse Bits of a Number in DSA Javascript - 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
Output of reversing bits for a small number
What is the output of reversing the bits of the number 13 (in 8-bit representation)?
DSA Javascript
function reverseBits(num) {
  let result = 0;
  for (let i = 0; i < 8; i++) {
    result <<= 1;
    result |= (num & 1);
    num >>= 1;
  }
  return result;
}

console.log(reverseBits(13));
A176
B104
C212
D91
Attempts:
2 left
💡 Hint
Think about the binary form of 13 and reversing its bits in 8-bit form.
❓ Predict Output
intermediate
2:00remaining
Output of reversing bits for a power of two
What is the output of reversing the bits of the number 16 (in 8-bit representation)?
DSA Javascript
function reverseBits(num) {
  let result = 0;
  for (let i = 0; i < 8; i++) {
    result <<= 1;
    result |= (num & 1);
    num >>= 1;
  }
  return result;
}

console.log(reverseBits(16));
A4
B1
C8
D128
Attempts:
2 left
💡 Hint
16 in binary is 00010000. Reverse the bits carefully.
🔧 Debug
advanced
2:00remaining
Identify the error in bit reversal code
What error does the following code produce when reversing bits of a number?
DSA Javascript
function reverseBits(num) {
  let result = 0;
  for (let i = 0; i < 8; i++) {
    result = result << 1 | num & 1
    num = num >> 1
  }
  return result
}

console.log(reverseBits(5));
ASyntaxError due to missing semicolons
BNo error, outputs 160
CTypeError because of bitwise operation on undefined
DWrong output: 10 instead of 160
Attempts:
2 left
💡 Hint
JavaScript allows missing semicolons in many cases.
❓ Predict Output
advanced
2:00remaining
Output of reversing bits for a 16-bit number
What is the output of reversing the bits of the number 4660 (in 16-bit representation)?
DSA Javascript
function reverseBits16(num) {
  let result = 0;
  for (let i = 0; i < 16; i++) {
    result <<= 1;
    result |= (num & 1);
    num >>= 1;
  }
  return result;
}

console.log(reverseBits16(4660));
A13325
B13320
C13335
D11336
Attempts:
2 left
💡 Hint
4660 in hex is 0x1234. Reverse its bits carefully in 16-bit form.
🧠 Conceptual
expert
2:00remaining
Number of set bits after reversing bits
If a number has 5 bits set to 1 in its 8-bit binary form, how many bits will be set to 1 after reversing its bits?
AAlways 5
BDepends on the number
CAlways 3
DAlways 8
Attempts:
2 left
💡 Hint
Reversing bits changes their positions but not their count.

Practice

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

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.
  3. Final Answer:

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

    Reverse bits = flip order [OK]
Hint: Think of bits like beads on a string flipped end to end [OK]
Common Mistakes:
  • Confusing reversing bits with flipping bits (0 to 1)
  • Thinking reversing bits changes the number by adding or multiplying
  • Assuming reversing bits means reversing digits in decimal
2. Which of the following JavaScript code snippets correctly reverses the bits of an 8-bit number n?
easy
A. let result = 0; for(let i=0; i<8; i++) { result += (n & 1) << i; n <<= 1; }
B. let result = 0; for(let i=0; i<8; i++) { result |= (n & 1) << i; n >>= 1; }
C. let result = 0; for(let i=0; i<8; i++) { result <<= 1; result |= (n & 1); n >>= 1; }
D. let result = 0; for(let i=7; i>0; i--) { result |= (n & 1) << i; n >>= 1; }

Solution

  1. Step 1: Analyze the loop and bit operations

    let result = 0; for(let i=0; i<8; i++) { result <<= 1; result |= (n & 1); n >>= 1; } shifts result left, adds least significant bit of n, then shifts n right. This reverses bits correctly.
  2. Step 2: Check other options for errors

    let result = 0; for(let i=0; i<8; i++) { result |= (n & 1) << i; n >>= 1; } does not reverse bits, it copies bits in same order. let result = 0; for(let i=7; i>0; i--) { result |= (n & 1) << i; n >>= 1; } shifts bits incorrectly. let result = 0; for(let i=0; i<8; i++) { result += (n & 1) << i; n <<= 1; } shifts n left, which is wrong.
  3. Final Answer:

    let result = 0; for(let i=0; i<8; i++) { result <<= 1; result |= (n & 1); n >>= 1; } -> Option C
  4. Quick Check:

    Shift result left + add bit from n right [OK]
Hint: Shift result left, add n's right bit, shift n right [OK]
Common Mistakes:
  • Shifting n left instead of right
  • Not shifting result before adding bit
  • Using wrong loop direction or bit positions
3. What is the output of the following code snippet?
function reverseBits(n) {
  let result = 0;
  for(let i = 0; i < 4; i++) {
    result <<= 1;
    result |= (n & 1);
    n >>= 1;
  }
  return result;
}

console.log(reverseBits(13));
medium
A. 14
B. 11
C. 7
D. 13

Solution

  1. Step 1: Convert 13 to 4-bit binary

    13 in binary (4 bits) is 1101.
  2. Step 2: Reverse bits step-by-step

    Loop 4 times: result builds as follows:
    i=0: result=0<<1=0 + (13&1=1) =1
    n=13>>1=6 (0110)
    i=1: result=1<<1=2 + (6&1=0) =2
    n=6>>1=3 (0011)
    i=2: result=2<<1=4 + (3&1=1) =5
    n=3>>1=1 (0001)
    i=3: result=5<<1=10 + (1&1=1) =11
  3. Final Answer:

    11 -> Option B
  4. Quick Check:

    Reverse 1101 = 1011 (binary 11 decimal) [OK]
Hint: Trace bit shifts and OR operations carefully [OK]
Common Mistakes:
  • Confusing decimal and binary values
  • Not shifting result before OR
  • Looping wrong number of times
4. Find the error in this bit reversal function and choose the corrected version:
function reverseBits(n) {
  let result = 0;
  for(let i = 0; i < 8; i++) {
    result |= (n & 1);
    result <<= 1;
    n >>= 1;
  }
  return result;
}
medium
A. Change loop to run 16 times
B. Shift n left instead of right
C. Initialize result with 1 instead of 0
D. Swap the order: shift result left before OR operation

Solution

  1. Step 1: Identify order of operations

    Current code ORs bit then shifts result left, causing last bit to be lost.
  2. Step 2: Correct by shifting result left before OR

    Shift result left first, then OR with current bit to build reversed bits correctly.
  3. Final Answer:

    Swap the order: shift result left before OR operation -> Option D
  4. Quick Check:

    Shift before OR to keep all bits [OK]
Hint: Always shift result left before adding new bit [OK]
Common Mistakes:
  • Shifting result after OR loses last bit
  • Shifting n left instead of right
  • Wrong loop count for bit size
5. You want to reverse the bits of a 16-bit number 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 check if reversed number equals its own reverse
B. Reverse bits using a loop, then reverse again and compare with original
C. Reverse bits using a loop, then compare reversed number with original
D. Reverse bits using a loop, then convert to decimal and check if even

Solution

  1. Step 1: Reverse bits of the number

    Use a loop to reverse all 16 bits correctly.
  2. Step 2: Check palindrome by comparing reversed number with its own reverse

    If reversed number equals its reverse, it is a binary palindrome.
  3. Final Answer:

    Reverse bits using a loop, then check if reversed number equals its own reverse -> Option A
  4. Quick Check:

    Palindrome check = reversed == reverse(reversed) [OK]
Hint: Check palindrome by comparing reversed number to its reverse [OK]
Common Mistakes:
  • Comparing reversed number directly to original (wrong for palindrome)
  • Checking decimal evenness instead of binary palindrome
  • Reversing bits twice unnecessarily
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